Я не совсем уверен, правильно ли я понимаю, поэтому хочу немного оптимизировать сетевые запросы для моего android приложения и до сих пор использовал OkhttpClient, HttpUrlConnection и Java Sockets, но не доволен производительностью , Я нашел хорошую библиотеку C ++ под названием Poco и подумал, что попробую ее, поэтому я кросс-скомпилирую ее для разных ABI. Пока все хорошо, дело в том, что я не уверен, нужно ли мне писать свою собственную оболочку JNI для poco, чтобы я мог использовать эти библиотеки, потому что я хочу скомпилировать ее только для разных ABI, но это не значит, что я могу использовать его прямо из коробки, или? И как лучше всего это делать? Нужно ли добавлять JNI, назовем его аннотациями методов, в файлы. cpp, чтобы использовать его? Причина, по которой я думаю о некоторой нативной библиотеке, заключается в том, что я запускаю несколько запросов http get для определения пропускной способности, поэтому я просто запускаю 4 запроса http с защелкой обратного отсчета и считываю байты из источника response.body!!.source()
с помощью OkHttpClient.
try {
val response = client.newCall(request).execute()
try {
val downloadReader = response.body!!.source()
awaitStart()
val byteArr = ByteArray(8192)
while (!emitter.isCancelled && !downloadReader.exhausted()) {
val read = downloadReader.read(byteArr)
if (read == -1) {
emitter.onComplete()
break
} else {
emitter.onNext(read)
}
}
}
Таким образом, поскольку я использую Rx Java, я буду запускать каждый http-запрос в Schedulers.newThread()
, агрегировать каждую эмиссию и производить выборку в определенное c время для результатов моих расчетов. Если я наблюдаю пропускную способность через Android Studio Network Profiler, я получаю слишком много колеблющихся значений, см .:
Заранее спасибо