ベンチマークを見て、次の結果を得ました。
g++ -I/usr/include/eigen3/ eigen.cpp -o eigen
g++ -O3 -I/usr/include/eigen3/ eigen.cpp -o eigen_opt
g++ -I/usr/include/eigen3/ matrix.cpp -o matrix
g++ -O3 -I/usr/include/eigen3/ matrix.cpp -o matrix_opt
./eigen 3.10s user 0.00s system 99% cpu 3.112 total
./eigen_opt 0.00s user 0.00s system 0% cpu 0.001 total
./matrix 0.06s user 0.00s system 96% cpu 0.058 total
./matrix_opt 0.00s user 0.00s system 0% cpu 0.001 total
コンパイラの最適化をオンにしない限り、Eigen は実際には高速ではありません。また、この場合のコンパイラは-O3
、ベンチマーク文字に対して機能する最適化を行っていると思われます。あなたはそれを調べたいかもしれません。
これにより、ライブラリを使用しないというあなたのポイントの1つ、つまり速度が削除されると思います。その基準がなくなったら、アカデミックな目的で何かをしたい、または独自のライブラリを作成したい以外に、既存のライブラリを使用しないと考える理由はありません。最近、独自の Matrix および Vector クラスを実装するライブラリまたはその他のコードを目にするたびに、可能であればそれを避けるようにしています。Eigenがあれば、Matlabの必要性ははるかに低くなります...