3

我正在评估安卓上的 i-jetty。我看到 i-jetty 支持 NIO 并且默认启用。这让我明白了:NIO 和传统 IO 在 android 上的比较如何?

乍一看,似乎在移动平台上蔚来会做得更好,因为它可以节省更多的内存。另一方面,OIO 可以更好地适应,因为通常我们不需要像在 Java EE 上那样需要很多打开的套接字。

4

1 回答 1

2

这并不是一个答案。只想与两个实现分享快速手动测试的结果:

  1. NIO with ION (1.1.5) by Koushik Dutta
  2. Square 中的人使用OkHttp (1.1.1)进行 OIO

测试是在具有 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/ION 测试多了一个“第一次运行”,速度稍慢。但是,它不应该对平均值/平均值产生很大影响。

从这个测试中,你可以说 NIO 在响应时间上更加可预测。

正如我所说,这并不是要回答的。我有兴趣查看其他测试结果并找出在哪种情况下 NIO/OIO 更好。谢谢

于 2013-07-28T20:55:04.213 回答