我正在评估安卓上的 i-jetty。我看到 i-jetty 支持 NIO 并且默认启用。这让我明白了:NIO 和传统 IO 在 android 上的比较如何?
乍一看,似乎在移动平台上蔚来会做得更好,因为它可以节省更多的内存。另一方面,OIO 可以更好地适应,因为通常我们不需要像在 Java EE 上那样需要很多打开的套接字。
这并不是一个答案。只想与两个实现分享快速手动测试的结果:
测试是在具有 LTE 的同一设备 (Android 4.0.4) 上完成的。8分钟内,108个请求一一发出(无并发)。请求分为 5 个部分: NIO -> OIO -> NIO -> OIO -> NIO 。该请求是对 UserGrid API 的 HTTP PUT 请求,该请求返回相同的响应,该响应被转换为字符串并以相同的方式处理。
以毫秒为单位:
NIO/ION 60 times OIO/OkHttp for 48 times
Min. : 889 Min. : 629.0
1st Qu.: 1086 1st Qu.: 774.5
Median : 1426 Median : 1241.0
Mean : 1659 Mean : 1712.2
3rd Qu.: 1697 3rd Qu.: 1881.2
Max. :10913 Max. :16333.0
Std Dev: 1329.406 Std Dev: 2254.099
评论:
从这个测试中,你可以说 NIO 在响应时间上更加可预测。
正如我所说,这并不是要回答的。我有兴趣查看其他测试结果并找出在哪种情况下 NIO/OIO 更好。谢谢