在C++中使用类代数结构矩阵的开销

use*_*893 6 c++ class overhead quaternions algebraic-data-types

我使用C++编写一些复杂的FFT算法,因此我需要实现四元数和Hamilton-Eisenstein代码等代数结构.算法适用于该结构的2D数组.将它们作为类实现的开销是多少?换句话说,我应该用[M] [N]维创建包含四元数类的数组,还是应该创建[M] [N] [4]数组并使用[4]数组作为四元数?使用类更方便,但是创建M*N类并访问它们的方法而不是仅使用数组 - 这不是太多的开销吗?我正在编写用于大型图像处理的算法,因此性能对我来说很重要.

vil*_*pam 2

恕我直言,将它们实现为类会更好,因为这会让您更快地编写代码并减少错误。如果这对您很重要,您应该进行测量,看看什么执行得最好,但也要确保该代码实际上是性能瓶颈。(强制性Donald Knuth 引用:“过早的优化是万恶之源”)。

我想说,大多数编译器都会很好地为您优化代码。我经常发现,除了这些低级的事情之外,还有其他一些事情会产生影响,比如添加提前测试或最小化数据集等等。

对于四元数,您仍然可以在内部使用数组来实现该类(如果实际上更快),这应该使差异变得不那么重要。

例如,确保可以在多核计算机上并行运行算法或使用 SSE 指令进行实际计算,可能会为您提供更好的服务。