Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中代数结构矩阵使用类的开销+; < >我用C++来编写一些复杂的FFT算法,所以需要实现四元数和汉密尔顿-艾森斯坦码这样的代数结构。该算法适用于该结构的二维数组。将它们实现为类的开销是多少?换句话说,我应该创建由四元数类组成的[M][N]维数组,还是应该创建[M][N][4]数组并将[4]数组作为四元数使用?使用类更方便,但是创建M*N类并访问它们的方法,而不是只使用数组——这不是太大的开销吗?我正在为大图像处理编写算法,因此性能对我来说很重要。_C++_Class_Overhead_Quaternions_Algebraic Data Types - Fatal编程技术网

C+中代数结构矩阵使用类的开销+; < >我用C++来编写一些复杂的FFT算法,所以需要实现四元数和汉密尔顿-艾森斯坦码这样的代数结构。该算法适用于该结构的二维数组。将它们实现为类的开销是多少?换句话说,我应该创建由四元数类组成的[M][N]维数组,还是应该创建[M][N][4]数组并将[4]数组作为四元数使用?使用类更方便,但是创建M*N类并访问它们的方法,而不是只使用数组——这不是太大的开销吗?我正在为大图像处理编写算法,因此性能对我来说很重要。

C+中代数结构矩阵使用类的开销+; < >我用C++来编写一些复杂的FFT算法,所以需要实现四元数和汉密尔顿-艾森斯坦码这样的代数结构。该算法适用于该结构的二维数组。将它们实现为类的开销是多少?换句话说,我应该创建由四元数类组成的[M][N]维数组,还是应该创建[M][N][4]数组并将[4]数组作为四元数使用?使用类更方便,但是创建M*N类并访问它们的方法,而不是只使用数组——这不是太大的开销吗?我正在为大图像处理编写算法,因此性能对我来说很重要。,c++,class,overhead,quaternions,algebraic-data-types,C++,Class,Overhead,Quaternions,Algebraic Data Types,我认为将它们实现为类会更好,因为这样可以让您更快地编写代码,同时减少错误。如果这对您很重要的话,您应该进行测量以查看什么性能最好,但也要确保这段代码实际上是性能瓶颈。(强制性:“过早优化是万恶之源”) 我想说,大多数编译器都能很好地为您优化代码。我经常发现,除了这些低层次的东西之外,还有其他一些东西起作用,比如添加早期测试或最小化数据集等等 对于四元数,您仍然可以在内部使用数组实现该类(如果实际速度更快),这将使差异更加不重要 例如,确保您可以在多核计算机上并行运行算法,或者让您的实际计算使用S

我认为将它们实现为类会更好,因为这样可以让您更快地编写代码,同时减少错误。如果这对您很重要的话,您应该进行测量以查看什么性能最好,但也要确保这段代码实际上是性能瓶颈。(强制性:“过早优化是万恶之源”)

我想说,大多数编译器都能很好地为您优化代码。我经常发现,除了这些低层次的东西之外,还有其他一些东西起作用,比如添加早期测试或最小化数据集等等

对于四元数,您仍然可以在内部使用数组实现该类(如果实际速度更快),这将使差异更加不重要


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

关于类的开销:除非您的类具有虚拟函数,否则使用类不会受到惩罚

因此,例如,复杂变量数组可以写成:

std::complex<double> m[10][10];
std::复数m[10][10];
不过,要注意STL集合类,因为它们倾向于使用动态分配,有时会引入大量开销(即,我不会使用
vector
创建数组)


您可能希望调查库的使用情况,例如用于快速、优化的矩阵/向量类。

您会发现这个问题很有用: