[英]C++ native OpenCV to opencv4android port too slow?
I am porting some C++ OpenCV desktop code to Android and using opencv4android. 我正在将一些C ++ OpenCV桌面代码移植到Android并使用opencv4android。 I am planning to switch to NTK eventually but for now, since I am very new to Android development, I thought it would be easier to proceed that way.
我计划最终转换为NTK,但由于我对Android开发非常陌生,所以我认为这样做会更容易。
The OpenCV function takes 37ms on my i7-4790 desktop (single thread and no GPU). OpenCV功能在我的i7-4790台式机上需要37毫秒(单线程,没有GPU)。 The function on Android Nexus 4 takes 10,557ms.
Android Nexus 4上的功能需要10,557毫秒。 I knew I could expect some slowdown with the java to native call overhead but that huge difference seems hard to explain.
我知道我可以预期Java到本机调用的开销会有所下降,但是这种巨大的差异似乎很难解释。 I am doing a lot of per-pixel operations with get/put but on relatively small images (about 500x500px).
我正在使用get / put进行很多每个像素的操作,但是在相对较小的图像(大约500x500px)上。
I put my opencv function in the following method: 我将opencv函数放入以下方法中:
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
// opencv4android code
...
}
}
}
}
Is there something wrong (maybe related to threading) or that performance is normal ? 有什么问题(可能与线程有关)还是性能正常? What kind of slowdown should I expect ?
我应该期待什么样的放缓? How about with NTK ?
NTK呢?
Many thanks, 非常感谢,
Guillaume 纪尧姆
For those interested, I just finished the NTK version. 对于那些感兴趣的人,我刚刚完成了NTK版本。 It takes about 125ms, so the speedup is indeed considerable.
它大约需要125毫秒,因此加速确实非常可观。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.