私はいくつかの Eigen MatrixXd と VectorXd を使用していますが、動的と固定サイズの違いについて少し混乱しています。Eigen のドキュメントによると、固定構造体のサイズはコンパイル時にわかります。私が使用するすべてのマトリックスでは、インスタンス化するときにサイズを定義し、プログラムの実行中にサイズを変更しません。
より正確には、いくつかの MatrixXd および VectorXd メンバーを持つクラスを使用しており、それらのサイズはクラスのコンストラクターで定義されています。それは動的に割り当てられるということですか?したがって、このページで提案されているような、コードを高速化するための最適化は必要ありませんよね?
私がこれを尋ねている理由は、Eigen の定義では動的サイズの構造を使用しているにもかかわらず、次のアサーション エラーに何度か遭遇したためです。
[darwin-pi2] darwin-pi2: /usr/include/Eigen/src/Core/DenseStorage.h:67: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array() [with T = double; int Size = 32400; int MatrixOrArrayOptions = 0]: Assertion `(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & 0xf) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed