Added timing script for Matrix::householder_()
parent
5f588031bc
commit
588c119bf3
|
|
@ -151,6 +151,48 @@ double timeColumn(size_t reps) {
|
||||||
return elapsed;
|
return elapsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Results
|
||||||
|
* Alex's machine
|
||||||
|
* Baseline (no householder, just matrix copy) : 0.05 sec
|
||||||
|
* Initial : 8.20 sec
|
||||||
|
*/
|
||||||
|
double timeHouseholder(size_t reps) {
|
||||||
|
// create a matrix
|
||||||
|
Matrix Abase = Matrix_(4, 7,
|
||||||
|
-5, 0, 5, 0, 0, 0, -1,
|
||||||
|
00, -5, 0, 5, 0, 0, 1.5,
|
||||||
|
10, 0, 0, 0,-10, 0, 2,
|
||||||
|
00, 10, 0, 0, 0,-10, -1);
|
||||||
|
|
||||||
|
// perform timing
|
||||||
|
double elapsed;
|
||||||
|
{
|
||||||
|
boost::timer t;
|
||||||
|
for (size_t i=0; i<reps; ++i) {
|
||||||
|
Matrix A = Abase;
|
||||||
|
householder_(A,3);
|
||||||
|
}
|
||||||
|
elapsed = t.elapsed();
|
||||||
|
}
|
||||||
|
return elapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
//double data[] = {-5, 0, 5, 0, 0, 0, -1,
|
||||||
|
// 00, -5, 0, 5, 0, 0, 1.5,
|
||||||
|
// 10, 0, 0, 0,-10, 0, 2,
|
||||||
|
// 00, 10, 0, 0, 0,-10, -1};
|
||||||
|
//
|
||||||
|
//// check in-place householder, with v vectors below diagonal
|
||||||
|
//double data1[] = {
|
||||||
|
// 11.1803, 0, -2.2361, 0, -8.9443, 0, 2.236,
|
||||||
|
// 0, 11.1803, 0, -2.2361, 0, -8.9443, -1.565,
|
||||||
|
// -0.618034, 0, 4.4721, 0, -4.4721, 0, 0,
|
||||||
|
// 0, -0.618034, 0, 4.4721, 0, -4.4721, 0.894 };
|
||||||
|
//Matrix expected1 = Matrix_(4,7, data1);
|
||||||
|
//Matrix A1 = Matrix_(4, 7, data);
|
||||||
|
//householder_(A1,3);
|
||||||
|
|
||||||
int main(int argc, char ** argv) {
|
int main(int argc, char ** argv) {
|
||||||
|
|
||||||
// Time collect()
|
// Time collect()
|
||||||
|
|
@ -173,11 +215,17 @@ int main(int argc, char ** argv) {
|
||||||
double vsRow_time = timeVScaleRow(m1, n1, reps1);
|
double vsRow_time = timeVScaleRow(m1, n1, reps1);
|
||||||
cout << "Elapsed time for vector_scale(row) [(" << m1 << ", " << n1 << ") matrix] : " << vsRow_time << endl;
|
cout << "Elapsed time for vector_scale(row) [(" << m1 << ", " << n1 << ") matrix] : " << vsRow_time << endl;
|
||||||
|
|
||||||
// Time column_() NOTE: using the gtsam version
|
// Time column_() NOTE: using the ublas version
|
||||||
cout << "Starting column_() Timing" << endl;
|
cout << "Starting column_() Timing" << endl;
|
||||||
size_t reps2 = 200000;
|
size_t reps2 = 200000;
|
||||||
double column_time = timeColumn(reps2);
|
double column_time = timeColumn(reps2);
|
||||||
cout << "Time: " << column_time << " sec" << endl;
|
cout << "Time: " << column_time << " sec" << endl;
|
||||||
|
|
||||||
|
// Time householder_ function
|
||||||
|
cout << "Starting householder_() Timing" << endl;
|
||||||
|
size_t reps_house = 500000;
|
||||||
|
double house_time = timeHouseholder(reps_house);
|
||||||
|
cout << "Elapsed time for householder_() : " << house_time << " sec" << endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue