欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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网速测试算法实现的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。