【问题标题】:Java NIO performance on AndroidAndroid 上的 Java NIO 性能
【发布时间】:2012-06-20 17:31:34
【问题描述】:

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

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

【问题讨论】:

  • 测试和测量。如果操作正确,NIO 将节省线程,即在一个线程中,因此节省线程堆栈,从而节省内存。在 wifi 或 4G 速度下,无论如何您都将受到网络限制,而不是 CPU 限制。
  • 根据blog.codepainters.com/2012/02/17/…,NIO 可以避免非 NIO 套接字代码中的一些错误。

标签: java android nio ijetty


【解决方案1】:

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

  1. NIO with ION (1.1.5) by Koushik Dutta
  2. OIO with OkHttp (1.1.1) 来自 Square 中的人

测试是在具有 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 在哪种情况下更好。谢谢

【讨论】:

  • 这个测试对OIO有利,但NIO结果更好。 1) 单线程。 2) NIO 的 3 个部分,带有一个额外的初始化。但差异并不显着,所以我什至不会说在 Android 4.0.4 上使用 ION 比使用 OkHttp 更好
猜你喜欢
  • 1970-01-01
  • 2010-12-08
  • 2015-02-16
  • 2012-10-11
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2013-04-10
  • 2012-07-26
相关资源
最近更新 更多