Reputation: 2688
I'm evaluating i-jetty on android. I saw that i-jetty supports NIO and that it enabled by default. This brings me to the point: How does NIO and traditional IO compare on android?
At first glance, it seems that on mobile platform NIO would do better since it may save more memory. On the other hand, the OIO can fit better since usually we don't need many open sockets like we do on Java EE.
Upvotes: 3
Views: 2855
Reputation: 1075
This is not meant to be an answer. Just want to share the result of a quick manual test with two implementations:
The test is done on the same device (Android 4.0.4) with LTE. Within 8 mins, 108 requests are made one by one (with no concurrency). The requests break down in 5 parts: NIO -> OIO -> NIO -> OIO -> NIO . The request is a HTTP PUT request to UserGrid API that return the same response that is turned to a String and processed in the same way.
In milliseconds:
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
Remarks:
From this test, you can say NIO is more predictable in response time.
As I said, this is not meant to be answer. I'm interested to see other test result and figure out in which scenario NIO/OIO is better. thx
Upvotes: 2