多线程C不是更快

时间:2015-02-19 22:21:24

标签: c multithreading performance opencv

我正在编写一个程序,用于将(使用opencv)图像转换为所需的大小,所有这些都由命令行参数给出。我正在使用pthreads来实现多线程,但在我的测试中,单线程程序与多线程程序的性能非常接近。

这实际上是我的第二个代码设计,首先我首先阅读所有图像,然后将它们分配给线程。这太耗费内存了,我改变了。

我是否必须使用fork()或更多与流程相关的东西才能使其以高效的并行方式运行?非常感谢您的建议!

由于代码太长而无法放在这里,我把它放在paste.ubuntu.com上。

主程序将argv参数正确地传递给convert函数。

http://paste.ubuntu.com/10314628/

1 个答案:

答案 0 :(得分:0)

感谢所有建议,我想我已经修复了所有问题,现在使用多线程速度快了2倍!在@jeffamaphone询问转换是否是昂贵的部分后,我尝试在线程内移动加载图像,程序瞬间变得更快。我用cvReleaseImage()管理内存,它也很完美。

以下是新代码:http://paste.ubuntu.com/10345572/

非常感谢您的帮助!

相关问题