当前位置:
首页 >
Ookla speedtest网速测试算法实现
发布时间:2025/3/19
50
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Ookla speedtest网速测试算法实现
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
参考speedtest.net (ookla)的文档
https://help.speedtest.net/hc/en-us/articles/360038679354-How-does-Speedtest-measure-my-network-speeds-
还有github上的一个项目
https://github.com/miquels/speedtest/blob/master/doc/algorithm.md
实现了一个山寨版测速小工具,关键代码如下
void PushSample(uint32_t val) {int i, inPos = 0;//降序插入,先寻找合适的插入位置for(i = 0; i < (int)StatisCtx.SampleCount; i++){if(val > StatisCtx.SampleArray[i]){inPos = i;break;}}//插入点数据全部后移StatisCtx.SampleCount++;for(i = (int)StatisCtx.SampleCount - 1; i > inPos; i--){StatisCtx.SampleArray[i] = StatisCtx.SampleArray[i - 1];}//插入StatisCtx.SampleArray[inPos] = val;StatisCtx.SampleLast = val; }uint32_t CalcSampleAverage(void) {uint32_t total = StatisCtx.SampleCount; //样本总数 平均值算法来自 Ooklauint32_t start = total * 10 / 100; //有效样本起始序号(忽略样本中最大的 10%)uint32_t end = total * 70 / 100; //有效样本结束序号(使用样本中间的 60% ,最小的 30% 丢弃了)uint32_t count = end - start; //有效样本的数量uint32_t sum = 0;//如果总样本少于 10 个,就不计算了if(total < 10)return -1;while(start < end){sum += StatisCtx.SampleArray[start];start++;}return sum / count; }
总结
以上是生活随笔为你收集整理的Ookla speedtest网速测试算法实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 让Windows控制台应用程序支持VT1
- 下一篇: UAC bypass 理论学习