Ookla speedtest网速测试算法实现
生活随笔
收集整理的這篇文章主要介紹了
Ookla speedtest网速测试算法实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
參考speedtest.net (ookla)的文檔
https://help.speedtest.net/hc/en-us/articles/360038679354-How-does-Speedtest-measure-my-network-speeds-
還有g(shù)ithub上的一個項目
https://github.com/miquels/speedtest/blob/master/doc/algorithm.md
實現(xiàn)了一個山寨版測速小工具,關(guān)鍵代碼如下
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;}}//插入點數(shù)據(jù)全部后移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; //樣本總數(shù) 平均值算法來自 Ooklauint32_t start = total * 10 / 100; //有效樣本起始序號(忽略樣本中最大的 10%)uint32_t end = total * 70 / 100; //有效樣本結(jié)束序號(使用樣本中間的 60% ,最小的 30% 丟棄了)uint32_t count = end - start; //有效樣本的數(shù)量uint32_t sum = 0;//如果總樣本少于 10 個,就不計算了if(total < 10)return -1;while(start < end){sum += StatisCtx.SampleArray[start];start++;}return sum / count; }?
總結(jié)
以上是生活随笔為你收集整理的Ookla speedtest网速测试算法实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让Windows控制台应用程序支持VT1
- 下一篇: UAC bypass 理论学习