现在,我正在使用OpenCV应用程序接口(C++
)开发一些应用程序。此应用程序使用视频进行处理。
在PC上,一切都运行得非常快。今天我决定把这个应用移植到Android上(使用摄像头作为视频输入)。幸运的是,有用于安卓的OpenCV,所以我只需将我的本机代码添加到示例安卓应用程序中。除了性能之外,一切都工作得很好。我对我的应用程序进行了基准测试,发现应用程序以4-5fps的速度工作,这实际上是不可接受的(我的设备有单核1 1ghz处理器)-我希望它以大约10fps的速度工作。
在C
上完全重写我的应用程序有意义吗?我知道使用像std::vector
这样的东西对开发人员来说很舒服,但我不在乎。
看起来OpenCV's C
接口和C++
接口具有相同的功能/方法。
我用谷歌搜索了这个问题,但什么也没找到。
谢谢你的建议。
发布于 2012-07-07 23:51:03
在做出这样的决定之前,您应该分析您的代码以定位代码中的热点。如果没有这些信息,您为加快速度所做的任何更改都将是猜测。你试过这个Android NDK profiler?吗?
发布于 2012-07-07 23:48:32
shervin imami在他的网站上做了一些性能测试。您可以查看它以获取一些想法。
http://www.shervinemami.info/timingTests.html
希望能有所帮助。
(而且,如果你能在某个地方分享你自己的发现,如果你有任何提高性能的方法,那就太好了。)
发布于 2012-07-07 23:53:51
我想这个问题需要表述为:C比C++快吗?答案是否定的。两者都被编译成本地机器语言,C++被设计成与C一样快,而对于STL (特别是ISO标准),它们也被设计并注意它们与指针一样快+它们提供了灵活性。使用C的唯一原因是你的平台不支持C++,不要把所有的东西都转换成C,因为你可能会得到几乎相同的性能。试着改进你的代码或者使用opencv的其他功能来做你想做的事情。
不相信吗?然后写一个简单的函数,一次用C语言,一次用C++,然后在一个循环中运行一亿次,然后自己测量时间。也许这能帮助你做出正确的决定
https://stackoverflow.com/questions/11376368
复制相似问题