2011-04-16 70 views
2

您能否告诉我如果使用矩阵库导致运行时间比常规for循环更快?目前,我有一些方法使用循环遍历多维向量来计算矩阵产品和基于元素的产品的循环,其中矩阵大小大约为1000行×400行。这个方法是我程序中最常用的方法,我想知道如果使用矩阵库会增加程序的速度。另外,你会推荐哪个库(来自http://eigen.tuxfamily.org/index.php?title=Benchmark,Eigen对我来说最好)?矩阵库vs C++中的循环

谢谢

+4

你为什么不把benchamrk和这两个结果报告? – 2011-04-16 05:05:33

+0

下面是一个问题:这个函数调用实际上是否会导致您的应用程序出现瓶颈?如果没有,为什么要花费时间来优化它呢? – 2011-04-16 05:07:56

+0

尝试提升uBLAS:http://www.boost.org/doc/libs/1_46_1/libs/numeric/ublas/doc/index.htm – ognian 2011-04-16 05:14:35

回答

1

是 - 相当数量的C++矩阵库(例如,MTL,uBLAS库,突击++)使用模板元编程来优化自己的行为。如果没有其他理由,我会从Boost uBlas开始。您可能还想查看其他可能性的OO numerics库列表。

1

我想回答这个问题“我应该”而不是“哪一个”,因为它不清楚你实际上是否需要这样的库。

矩阵库会提高执行时间吗?大概。他们在高中教你的方法肯定不是最快的。但还有其他问题需要考虑。

首先,你是否过早优化?试图尽可能快地让你的程序尽可能快是诱人的,但并不总是正确的做法。你必须做出决定,如果这样做是真正有效的方式花时间。

二,速度对可用性有什么重大影响?让程序在2秒而不是4秒内工作并不是真的值得......但30小时而不是60小时?也许是这样。我喜欢在抛光之前强调一切工作。

最后,我遇到了几年前其他人写过的几个代码示例,这些代码完全没用。无法用新的操作系统或编译器或不同的东西编译的旧库意味着我不得不完全重写一些浪费数周的时间。它最初看起来似乎是一个好主意,可以获得额外的百分之几的性能,但这意味着它们的代码寿命有限,尤其是因为文档较差。

保持简单愚蠢是许多事情的优秀口头禅。我绝对需要的时候强烈建议只使用库,然后只使用那些看起来很长寿和稳定的库。