Это не должно быть ответом. Просто хочу поделиться результатом быстрого ручного теста с двумя реализациями:
- NIO с ION (1.1.5) по Koushik Датта
- Оио с OkHttp (1.1.1) парни на площади
Тест выполняется на том же устройстве (Android 4.0.4) с LTE. В течение 8 минут 108 запросов выполняются один за другим (без параллелизма). Запросы разбиваются на 5 частей: NIO -> OIO -> NIO -> OIO -> NIO. Запрос представляет собой HTTP-запрос PUT для API UserGrid, который возвращает тот же ответ, который обращается к String и обрабатывается таким же образом.
В миллисекунды:
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 лучше. thx
Тест и меры. NIO будет экономить на потоках, если вы сделаете это правильно, то есть в одном потоке, и, следовательно, сохранит потоки, которые сохраняют память. При скорости Wi-Fi или 4G вы все равно будете привязаны к сети, а не связаны с CPU. – EJP
В соответствии с этим http://blog.codepainters.com/2012/02/17/why-java-nio-is-a-better-idea-for-android/, может быть преимущество с NIO, избегая некоторых ошибок в не-NIO. – RenniePet