SGNetworkTest 是一款由 Surge 发布的开源网络延迟测速工具,主要用来「评估 Surge 是否按预期正常工作,也可使用该工具与协议的官方客户端进行对比,确认 Surge 对代理协议的实现是否达到最优」,为测速党提供了一个对比评测的新工具。@Appinn
SGNetworkTest
SGNetworkTest 以 TestFlight 形式发布:https://testflight.apple.com/join/ABWQfJsU,在 GitHub 开源,可自行编译。
评估网络质量与代理工具性能有多项指标,最重要的有带宽和延迟,带宽已经有非常多的工具可以测试,而大部分工具的延迟测试对于工作于 L4 的代理工具是无效的。
另一方面,由于 Surge 内部的延迟信息是由内部视角取得的测试数据,并不一定能反映真实的使用感受,为此我们制作了一个开源的小工具用于测试延迟。
- 工具完全开源,代码非常简单,可自行编译使用
- 该工具使用 NSURLSession 模拟一般应用,并发执行 5 个 HTTP/HTTPS 请求,使用 HEAD 方法。NSURLSession 是系统提供的 HTTP Client,几乎所有 iOS App 均使用该类库进行网络请求。
- 测试程序内含两组测试服务器:中国(如 taobao.com)和全球(如 twitter.com),具体测试目标会在日志中输出。
- 每次测试会进行 11 轮,第一轮作为预热不计入结果,用于去除 DNS 查询延迟等不确定因素。最终结果将选择后 10 轮中最优的 5 轮数据取平均值。(因为网络肯定会存在波动导致延迟不断变化,而由代理工具所引入的额外开销通常是固定的,所以以这样的方式去处理数据以减少网络波动的影响)
- 每轮测试结束后使用 [NSURLSession invalidateAndCancel] 保证下一轮测试重新进行连接。
Surge 在延迟方面做了非常多的架构和细节优化,确保在由 Surge 进行请求转发时尽量降低延迟损耗。通常来说,开启 Surge 使用 Direct Outbound 模式,测试结果应与不开启 Surge 直接测试相差在 5ms 以内。若使用规则模式进行测试,可能再额外产生个位数 ms 的开销。
该工具可用于评估 Surge 是否按预期正常工作,也可使用该工具与协议的官方客户端进行对比,确认 Surge 对代理协议的实现是否达到最优。
界面十分硬核,其实并没有什么界面,就是跑了一些数据,以及四个测试项目。比如测试 HTTP Delay Test(China),只需要关注测试结果中最后一行数据即可:
更多细节详见发布页面,测速对比党们可以上了。
原文:https://www.appinn.com/sgnetworktest/