c++ - Matlab 仍然比 C++ 中的 opencv 慢吗

标签 c++ performance matlab opencv cross-correlation

根据这个link还有这个one ,据说opencv比matlab快多了。第一个链接写于 2012 年 3 月,第二个链接比那个晚一点。

在第一个链接中,它说,“用 OpenCV 编写的程序比用 Matlab 编写的类似程序运行得快得多。” 并评价 Matlab:2/10OpenCV:9/10

考虑一下,我有两个float Matrix,它们的大小是1024*1024(ma​​t1ma​​t2)。我想关联这个矩阵。

在 matlab 中,

corr2(mat1,mat2);     //70-75 ms

在opencv、c++中

Mat result(1,1,CV_32F);
matchTemplate(mat1,mat2,result, CV_TM_CCOEFF_NORMED);      // 145-150 ms

据我所知,c 和 c++ 的速度大致相同。

所以,我想知道,为什么 matlab 在进行互相关时比 opencv/c++ 快。 是因为我在比较错误的东西(即使结果相同)还是 matlab 的互相关实现比 opencv 实现快一倍?

请注意,我使用的是 Matlab 2013aVisual Studio 2010

谢谢,

最佳答案

Matlab 内建函数自带 mkl 和 opencv 的 dont。因此,如果两者都存在两个完全等效的函数,则 matlab 可能比 opencv 快(很多)。我曾尝试在大型矩阵上进行伪逆运算,而 matlab 击败了一切(openblas、 Armadillo 、自积分 mkl 等)至少 2 倍。然后我就不再弄清楚为什么了,只是将数据加载到 matlab 中,让它做这件事。 opencv 是迄今为止最慢的。在 opencv 中尝试对 10000x10000 矩阵进行矩阵乘法。在我的笔记本电脑上花了 10 分钟。 Matlab用了1分钟。

关于c++ - Matlab 仍然比 C++ 中的 opencv 慢吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761170/

相关文章:

c++ - 访问指向 vector C++ 的指针

mysql - Mahout 解决推荐性能问题

java - 如何制作 "simple"吞吐量的 servlet-filter?

matlab - 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

c++ - 测试字节顺序兼容性的工作流程

c++ - DirectX 11 输入读取方法

matlab - A=A+B 会分配新的内存吗?

matlab - 如何在 MATLAB 中执行此累积和?

c++ - 如何从文本文件读取字符串和 double 到链接列表

java - 在 Caliper 中使用代表