我正在编写一个程序来将(使用 opencv)图像转换为所需的尺寸,所有尺寸均由命令行参数给出。我正在使用 pthreads 进行多线程,但在我的测试中,单线程程序的性能与多线程程序非常接近。
这实际上是我的第二个代码设计,首先我先读取所有图像,然后将它们分配给线程。它太消耗内存了,我改变了它。
我是否必须使用 fork() 或其他与进程相关的东西才能使其以高效的并行方式运行?非常感谢您的建议!
由于代码太长放不下,所以我把它放到了paste.ubuntu.com上。
主程序正确地将 argv 参数传递给转换函数。
最佳答案
感谢您的所有建议,我想我解决了所有问题,现在使用多线程速度快了 2 倍以上!在@jeffamaphone询问转换是否是昂贵的部分之后,我尝试将加载图像移动到线程内,程序立即变得更快。我正在使用 cvReleaseImage() 管理内存,它也工作得很好。
这是新代码:http://paste.ubuntu.com/10345572/
非常感谢您的帮助!
关于c - 多线程 C 速度并不快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618172/