aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/sparse_dense_product.cpp
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-01-20 16:50:47 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-01-20 16:50:47 +0000
commitf645d1f911fe31ed9a1203681956fd87bc49fcf3 (patch)
treeb28c5d95d9a372b3f16637d7f916ca81a888f102 /bench/sparse_dense_product.cpp
parent8973d12cdae503e0996edd52f8c78879274c0e70 (diff)
* complete the support of QVector via a QtAlignedMalloc header
* add a unit test for QVector which shows the issue with QVector::fill
Diffstat (limited to 'bench/sparse_dense_product.cpp')
-rw-r--r--bench/sparse_dense_product.cpp54
1 files changed, 14 insertions, 40 deletions
diff --git a/bench/sparse_dense_product.cpp b/bench/sparse_dense_product.cpp
index 3caf8598a..9b9af8819 100644
--- a/bench/sparse_dense_product.cpp
+++ b/bench/sparse_dense_product.cpp
@@ -91,51 +91,25 @@ int main(int argc, char *argv[])
{
std::cout << "Eigen sparse\t" << sm1.nonZeros()/float(sm1.rows()*sm1.cols())*100 << "%\n";
-// timer.reset();
-// timer.start();
BENCH(for (int k=0; k<REPEAT; ++k) v2 = sm1 * v1;)
-// timer.stop();
std::cout << " a * v:\t" << timer.value() << endl;
-// std::cout << sm3 << "\n";
- timer.reset();
- timer.start();
-// std::cerr << "transpose...\n";
-// EigenSparseMatrix sm4 = sm1.transpose();
-// std::cout << sm4.nonZeros() << " == " << sm1.nonZeros() << "\n";
-// exit(1);
-// std::cerr << "transpose OK\n";
-// std::cout << sm1 << "\n\n" << sm1.transpose() << "\n\n" << sm4.transpose() << "\n\n";
- BENCH(for (int k=0; k<REPEAT; ++k) v2 = sm1.transpose() * v1;)
-// timer.stop();
+
+ BENCH(for (int k=0; k<REPEAT; ++k) { asm("#mya"); v2 = sm1.transpose() * v1; asm("#myb"); })
+
std::cout << " a' * v:\t" << timer.value() << endl;
}
-
- // CSparse
- #ifdef CSPARSE
- {
- std::cout << "CSparse \t" << density*100 << "%\n";
- cs *m1, *m2, *m3;
- eiToCSparse(sm1, m1);
- eiToCSparse(sm2, m2);
-
- timer.reset();
- timer.start();
- for (int k=0; k<REPEAT; ++k)
- {
- m3 = cs_sorted_multiply(m1, m2);
- if (!m3)
- {
- std::cerr << "cs_multiply failed\n";
-// break;
- }
-// cs_print(m3, 0);
- cs_spfree(m3);
- }
- timer.stop();
- std::cout << " a * b:\t" << timer.value() << endl;
- }
- #endif
+
+// {
+// DynamicSparseMatrix<Scalar> m1(sm1);
+// std::cout << "Eigen dyn-sparse\t" << m1.nonZeros()/float(m1.rows()*m1.cols())*100 << "%\n";
+//
+// BENCH(for (int k=0; k<REPEAT; ++k) v2 = m1 * v1;)
+// std::cout << " a * v:\t" << timer.value() << endl;
+//
+// BENCH(for (int k=0; k<REPEAT; ++k) v2 = m1.transpose() * v1;)
+// std::cout << " a' * v:\t" << timer.value() << endl;
+// }
// GMM++
#ifndef NOGMM