From 890a8de962e575442bc3195967a26a26e5139db9 Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Fri, 2 May 2008 08:53:23 +0000 Subject: Make products always eval into expressions. Improves performance in benchmark. Still not as fasts as explicit eval(), strangely. --- Eigen/src/Core/Assign.h | 1 + Eigen/src/Core/Product.h | 2 +- bench/benchmark.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Eigen/src/Core/Assign.h b/Eigen/src/Core/Assign.h index 362e3e9e7..3862ae831 100644 --- a/Eigen/src/Core/Assign.h +++ b/Eigen/src/Core/Assign.h @@ -114,6 +114,7 @@ Derived& MatrixBase { // std::cout << typeid(OtherDerived).name() << "\n"; // std::cout << "lazyAssign = " << (Derived::Flags&VectorizableBit) << " " << (OtherDerived::Flags&VectorizableBit) << "\n"; +// std::cout << __PRETTY_FUNCTION__ << std::endl; ei_assignment_impl::execute(derived(),other.derived()); return derived(); } diff --git a/Eigen/src/Core/Product.h b/Eigen/src/Core/Product.h index 86f37ec43..cdb4e88b4 100644 --- a/Eigen/src/Core/Product.h +++ b/Eigen/src/Core/Product.h @@ -141,7 +141,7 @@ struct ei_traits > | ((RowsAtCompileTime == Dynamic || ColsAtCompileTime == Dynamic) ? 0 : LargeBit)), Flags = ((unsigned int)(LhsFlags | RhsFlags) & _LostBits) | EvalBeforeAssigningBit - | ((int)EvalMode == (int)CacheOptimalProduct ? EvalBeforeNestingBit : 0) + | EvalBeforeNestingBit | (_Vectorizable ? VectorizableBit : 0), CoeffReadCost = Lhs::ColsAtCompileTime == Dynamic diff --git a/bench/benchmark.cpp b/bench/benchmark.cpp index 53693cbf6..4061b0211 100644 --- a/bench/benchmark.cpp +++ b/bench/benchmark.cpp @@ -39,7 +39,7 @@ int main(int argc, char *argv[]) asm("#begin"); for(int a = 0; a < REPEAT; a++) { - m = I + 0.00005 * (m + m*m); + m = Matrix::ones() + 0.00005 * (m + m*m); } asm("#end"); cout << m << endl; -- cgit v1.2.3