std :: valarray,std:vector还是arma :: vec?

时间:2017-07-13 12:29:37

标签: c++ arrays vector armadillo valarray

我不确定这是否是这个问题的地方,但现在就这样了。

我正在研究C ++中的计算物理模型,我收到了一个很重要的代码。

该领域是量子电子学,因此有很多积分和表达式,但我的问题涉及优化。

最初代码需要4个小时才能完成模拟,我在删除了几个瓶颈后整理了30分钟。

我仍然不喜欢的是代码中的数据(主要是double类型的数组)混合std::vector<(double)>std::valarray<(double)>和armadilo的arma::vec。< / p>

哪一个是最好的方法,我是否应该尝试为数组制作统一的数据类型?

我认为之前博士生使用valarray的原因是它的友好性,因为运营商*/+-已经过载,而且有一些稀缺的在线承诺valarray比传真更快(关于此的大型在线辩论)。 犰狳是由于它与MATLAB语法的相似性和极其完善的文档库而被引入,并且当T为class而不是double时保留std::vector<(T)>

我个人更喜欢犰狳,因为它具有非常简单的逻辑并且感觉很自然,valarray有时会因为它们没有很多成员函数而烦恼我,但是通过它们进行迭代非常容易,向量非常烦人,算术运算符没有为<(double)>重载,如果我选择了这些,我可能需要为double的数组创建我自己的类,我真的不想这样做。

请记住,我不知道这些数组在内存中是如何表现的,去年我开始使用C ++,我还有很长的路要走。我计划再开发2个维度的代码(目前它是1D),执行时间肯定会增长。

我在那里寻求建议,我应该继续使用哪种数组类型,并且我应该使代码统一(强制所有double数组的类型相同(std::valarraystd::vectorarma::vec))

0 个答案:

没有答案