您是否可以告诉我,使用矩阵库是否比常规for循环更快地运行?目前,我有一些方法使用for循环迭代多维向量来计算矩阵乘积和元素乘积,其中矩阵大小大约是1000列乘400行 . 这个方法是我程序中最常用的方法,我想知道使用矩阵库是否会提高程序的速度 . 另外,你会推荐哪个图书馆(来自http://eigen.tuxfamily.org/index.php?title=Benchmark,Eigen对我来说最好)?
谢谢
您是否可以告诉我,使用矩阵库是否比常规for循环更快地运行?目前,我有一些方法使用for循环迭代多维向量来计算矩阵乘积和元素乘积,其中矩阵大小大约是1000列乘400行 . 这个方法是我程序中最常用的方法,我想知道使用矩阵库是否会提高程序的速度 . 另外,你会推荐哪个图书馆(来自http://eigen.tuxfamily.org/index.php?title=Benchmark,Eigen对我来说最好)?
谢谢
2 回答
是 - 相当数量的C矩阵库(例如,MTL,uBLAS,Blitz)使用模板元编程来优化其行为 . 如果没有其他理由,我会从Boost uBlas开始 . 您可能还想查看OO numerics库列表以了解其他可能性 .
我试图回答问题"should I"而不是"which one"因为你不清楚你真的需要这样一个库 .
矩阵库会改善执行时间吗?大概 . 他们在高中教你的方法肯定不是最快的 . 但是还有其他问题需要考虑 .
首先,你是否过早优化?尽快让你的程序尽快制作是诱人的,但并不总是正确的做法 . 你必须做出决定,如果这样做真的是一种有效的方式来度过你的时间 .
其次,速度会对可用性产生重大影响吗?使程序在2秒而不是4秒内工作并不值得付出努力....但是30小时而不是60小时?可能是吧 . 我喜欢在进行抛光之前强调让一切工作正常 .
最后,我遇到了几个其他人几年前编写的代码示例,这些代码完全没用 . 使用新操作系统或编译器无法找到或编译的旧库或不同的东西意味着我必须完全重写浪费我几个星期的时间 . 最初获得额外的几个百分点性能似乎是一个好主意,但这意味着他们的代码寿命有限,特别是因为文档很差 .
保持简单愚蠢是许多事情的优秀口头禅 . 我强烈主张只在绝对必要时使用库,然后才使用那些看似长寿和稳定的库 .