测量下载速度

时间:2011-06-06 08:19:38

标签: c# .net windows http webclient

我的应用程序将使用代理,其中一些,如何找出每个代理提供的下载速度,我想先使用速度最快的代理,寻找简单的实现。

请提供建议,也欢迎粗略的想法。

提前谢谢。

3 个答案:

答案 0 :(得分:2)

您没有提供任何有关如何实施此建议的详细信息 - 您已将其标记为c#和.net - 这是否意味着您将使用这些程序构建测试工具?

简单的答案是衡量下载已知大小的文件所需的时间。但实际上你需要从不同位置下载大量文件,然后根据大小绘制时间 - 然后在点上拟合一条线(使用最少r ^ 2是最简单的方法)。它跨越时间访问的点将为您提供平均端到端延迟,斜率是平均带宽。注意,这与连接的带宽不同 - jsut是有效吞吐量的衡量标准。

OTOH如果您想使用来自服务器的真实网络流量长时间衡量有效带宽和延迟,请查看Yahoo Boomerang。

答案 1 :(得分:2)

您可以使用动态创建的多个后台工作程序来启动每个代理的下载

使用基于的算法 http://www.devtoolshed.com/content/c-download-file-progress-bar

您可以使用ReportProgress句柄来衡量下载速度并停止具有最高延迟的后台工作程序。

使用这种技术,您可以选择从每个代理下载5-10%,然后丢弃最慢的

答案 2 :(得分:1)

每秒接收的总字节数不会告诉您接收的带宽或速度。当然,必须每秒计算一次,以确保准确性。

但是,在任何时候,只有一个代理流可以获得正确的流量?哪个代理在更长的时间内获得更多的时间片,那么它就有更多的带宽。

希望我的理解是对的!!如果没有,请道歉。