mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
- make MatrixBase and all expressions aware of their preferred traversal order.
Honor this preference in operator=. - add several methods to the API - rework API for diagonal matrices - add benchmarking code
This commit is contained in:
22
doc/benchmarkX.cpp
Normal file
22
doc/benchmarkX.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
// g++ -O3 -DNDEBUG benchmarkX.cpp -o benchmarkX && time ./benchmarkX
|
||||
|
||||
#include <Eigen/Core>
|
||||
|
||||
using namespace std;
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
MatrixXd I = MatrixXd::identity(20);
|
||||
MatrixXd m(20,20);
|
||||
for(int i = 0; i < 20; i++) for(int j = 0; j < 20; j++)
|
||||
{
|
||||
m(i,j) = 0.1 * (i+20*j);
|
||||
}
|
||||
for(int a = 0; a < 1000000; a++)
|
||||
{
|
||||
m = I + 0.00005 * (m + m*m);
|
||||
}
|
||||
cout << m << endl;
|
||||
return 0;
|
||||
}
|
||||
16
doc/benchmark_suite
Executable file
16
doc/benchmark_suite
Executable file
@@ -0,0 +1,16 @@
|
||||
echo "Fixed size 3x3, ColumnMajor, -DNDEBUG"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=ColumnMajor -DNDEBUG benchmark.cpp -o benchmark && time ./benchmark >/dev/null
|
||||
echo "Fixed size 3x3, ColumnMajor, with asserts"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=ColumnMajor benchmark.cpp -o benchmark && time ./benchmark >/dev/null
|
||||
echo "Fixed size 3x3, RowMajor, -DNDEBUG"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=RowMajor -DNDEBUG benchmark.cpp -o benchmark && time ./benchmark >/dev/null
|
||||
echo "Fixed size 3x3, RowMajor, with asserts"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=RowMajor benchmark.cpp -o benchmark && time ./benchmark >/dev/null
|
||||
echo "Dynamic size 20x20, ColumnMajor, -DNDEBUG"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=ColumnMajor -DNDEBUG benchmarkX.cpp -o benchmarkX && time ./benchmarkX >/dev/null
|
||||
echo "Dynamic size 20x20, ColumnMajor, with asserts"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=ColumnMajor benchmarkX.cpp -o benchmarkX && time ./benchmarkX >/dev/null
|
||||
echo "Dynamic size 20x20, RowMajor, -DNDEBUG"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=RowMajor -DNDEBUG benchmarkX.cpp -o benchmarkX && time ./benchmarkX >/dev/null
|
||||
echo "Dynamic size 20x20, RowMajor, with asserts"
|
||||
g++ -O3 -I .. -DEIGEN_DEFAULT_MATRIX_STORAGE_ORDER=RowMajor benchmarkX.cpp -o benchmarkX && time ./benchmarkX >/dev/null
|
||||
1
doc/snippets/MatrixBase_asDiagonal.cpp
Normal file
1
doc/snippets/MatrixBase_asDiagonal.cpp
Normal file
@@ -0,0 +1 @@
|
||||
cout << Vector3i(2,5,6).asDiagonal() << endl;
|
||||
@@ -1,4 +1,4 @@
|
||||
Matrix4d m = Matrix4d::diagonal(Vector4d(1,2,3,4));
|
||||
Matrix4d m = Vector4d(1,2,3,4).asDiagonal();
|
||||
cout << "Here is the matrix m:" << endl << m << endl;
|
||||
cout << "Here is m.block<2, 2>(2, 2):" << endl << m.block<2, 2>(2, 2) << endl;
|
||||
m.block<2, 2>(2, 0) = m.block<2, 2>(2, 2);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Matrix3d m = Matrix3d::diagonal(Vector3d(1,2,3));
|
||||
Matrix3d m = Vector3d(1,2,3).asDiagonal();
|
||||
cout << "Here is the matrix m:" << endl << m << endl;
|
||||
cout << "Here is m.dynBlock(1, 1, 2, 1):" << endl << m.dynBlock(1, 1, 2, 1) << endl;
|
||||
m.dynBlock(1, 0, 2, 1) = m.dynBlock(1, 1, 2, 1);
|
||||
|
||||
Reference in New Issue
Block a user