c - 多线程 C 速度并不快

标签 c multithreading performance opencv

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

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

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

由于代码太长放不下,所以我把它放到了paste.ubuntu.com上。

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

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

最佳答案

感谢您的所有建议,我想我解决了所有问题,现在使用多线程速度快了 2 倍以上!在@jeffamaphone询问转换是否是昂贵的部分之后,我尝试将加载图像移动到线程内,程序立即变得更快。我正在使用 cvReleaseImage() 管理内存,它也工作得很好。

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

非常感谢您的帮助!

关于c - 多线程 C 速度并不快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28618172/

相关文章:

CMake 指示编译器不支持标志,但它支持

c - 如何用列表解决这个问题?

c# - 如何有效地从八叉树/四叉树中获取结果?

c - 如何使用 void * 数据创建结构体?

c++ - LLVM如何检测和忽略库(内置)函数?

java - 迭代 WeakHashMap

java - 如何了解调试期间哪个线程正在创建新变量?

java - 如何定期调用 asyncTasks

performance - AWS 资源共享

c++ - 为什么我的有限状态机需要这么长时间才能执行?