Android Poco C++;安卓JNI

Android Poco C++;安卓JNI,android,c++,android-ndk,java-native-interface,poco-libraries,Android,C++,Android Ndk,Java Native Interface,Poco Libraries,我不确定我是否理解正确,所以我想为我的android应用程序优化一点网络请求,到目前为止使用了OkhttpClient、HttpUrlConnection和Java Sockets,但对性能不满意。我找到了一个很好的C++库,叫做POCO,我想我会尝试一下,所以我会为不同的ABI交叉编译。到目前为止,很好的一点是,我不确定是否需要为poco编写自己的JNI包装器,以便我可以使用这些库,因为我的意思是只为不同的ABI编译它并不意味着我可以直接使用它,或者?这样做的最佳实践是什么?我是否需要向.cp

我不确定我是否理解正确,所以我想为我的android应用程序优化一点网络请求,到目前为止使用了OkhttpClient、HttpUrlConnection和Java Sockets,但对性能不满意。我找到了一个很好的C++库,叫做POCO,我想我会尝试一下,所以我会为不同的ABI交叉编译。到目前为止,很好的一点是,我不确定是否需要为poco编写自己的JNI包装器,以便我可以使用这些库,因为我的意思是只为不同的ABI编译它并不意味着我可以直接使用它,或者?这样做的最佳实践是什么?我是否需要向.cpp文件添加JNI方法注释来使用它? 我之所以考虑一些本机库,是因为我启动了多个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)
                }
            }
        } 
因此,由于我使用RxJava,我将在一个
Schedulers.newThread()
中启动每个http请求,并聚合每个发射,并在特定时间采样结果以进行计算。如果我通过Android Studio Network Profiler观察吞吐量,我会得到太多波动值,请参见:


提前感谢

如果您的应用程序是网络绑定的,那么切换到JNI解决不了任何问题。您说的“网络绑定”是什么意思?因此,我所做的是一个简单的http get请求,在多个线程中收集一个大的二进制文件。网络绑定意味着(除非您做了一些非常错误的事情),获取文件的性能受到网络连接容量的限制。您是否测量了您获得的吞吐量,并将其与使用
curl
获取文件连接到同一无线网络的笔记本电脑进行了比较?是的,但我主要担心的是,在安卓系统上,我有一个奇怪的行为,每次我得到这样一个模式:我不知道为什么我一直得到这些峰和尾,这让我很难。你能把这个图和一些关于它的信息一起放在问题中吗?ie这是一个单独的HTTP连接获取一个文件还是按顺序获取多个文件?您是否也在处理多线程HTTP回迁?你在非Android设备上也看到了同样的情况吗?是什么代码产生的?