犰狳与闪电战++

问题描述 投票:17回答:4

我正在用C ++开始一个新的科学计算项目,并且由于包含了大量数字化程序,我正在考虑使用Armadillo或Blitz ++来进行有效的数组/矩阵/张量处理。哪一个更好用?

c++ scientific-computing
4个回答
17
投票

我们对使用Armadillo R / C ++集成软件包装到RRcpp非常满意 - 最终的软件包是RcppArmadillo

康拉德非常乐于助人,而且Armadillo正在积极发展。我的理解是,Blitz ++虽然在时间上是开创性的,对模板化线性代数影响很大,但却不再积极发展。

编辑2012-06-28:显然在Sourceforge site for Blitz正在进行新的Blitz ++开发。

编辑2017-12-16:看起来Blitz++现在在GitHub。


12
投票

在这种情况下,当处理线性代数和C ++时,我热烈建议看看Eigen。

http://eigen.tuxfamily.org/index.php?title=Main_Page

可能是我认为最好的C ++线性代数库之一。


4
投票

为了完整性:我强烈建议不要使用Boost :: uBLAS,以防万一有人正在考虑它。我使用它并且API很麻烦,性能总体上低于EigenArmadillo;这甚至在uBLAS的FAQ部分中提到过

问:我应该将uBLAS用于新项目吗?

答:在撰写本文时(09/2012),有许多可用的良好矩阵库,例如MTL4,犰狳,本征...... uBLAS提供了良好(但并不突出)的性能。另一方面,uBLAS的最后一次重大改进是在2008年,自2009年以来没有发生重大变化。所以应该问自己一些问题来帮助做出决定:......易于使用? uBLAS易于用于简单的事情,但是当你离开路径时需要体面的C ++知识。性能?有更快的选择。前沿? uBLAS已经超过10年了,并且错过了C ++ 11中的所有新东西。

“我正在开始一个新的科学计算项目...”

Armadillo API试图模仿MATLAB语法,我认为你熟悉它。


0
投票

我遇到与Ublas一起工作的一件事是,它没有提供像max(u,0)u+1abs(u)这样的操作的选项,其中u是一个向量。此外,与ARMADILLO相比,Boost Ublas的语法编写起来很麻烦。还有速度比较[点击](Compare blitz++, armadillo, boost::MultiArray)所以,我推荐犰狳。

© www.soinside.com 2019 - 2024. All rights reserved.