diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2019-03-03 21:09:10 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-03-03 21:10:13 +0100 |
commit | f0238cfb6997c4acfc2bd200de7295f3fa36968f (patch) | |
tree | b215183760e4f615b9c1dabc1f116383b72a1b55 /eigen/bench/geometry.cpp | |
parent | 543edd372a5193d04b3de9f23c176ab439e51b31 (diff) |
don't index Eigen
Diffstat (limited to 'eigen/bench/geometry.cpp')
-rw-r--r-- | eigen/bench/geometry.cpp | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/eigen/bench/geometry.cpp b/eigen/bench/geometry.cpp deleted file mode 100644 index b187a51..0000000 --- a/eigen/bench/geometry.cpp +++ /dev/null @@ -1,126 +0,0 @@ - -#include <iostream> -#include <Eigen/Geometry> -#include <bench/BenchTimer.h> - -using namespace std; -using namespace Eigen; - -#ifndef SCALAR -#define SCALAR float -#endif - -#ifndef SIZE -#define SIZE 8 -#endif - -typedef SCALAR Scalar; -typedef NumTraits<Scalar>::Real RealScalar; -typedef Matrix<RealScalar,Dynamic,Dynamic> A; -typedef Matrix</*Real*/Scalar,Dynamic,Dynamic> B; -typedef Matrix<Scalar,Dynamic,Dynamic> C; -typedef Matrix<RealScalar,Dynamic,Dynamic> M; - -template<typename Transformation, typename Data> -EIGEN_DONT_INLINE void transform(const Transformation& t, Data& data) -{ - EIGEN_ASM_COMMENT("begin"); - data = t * data; - EIGEN_ASM_COMMENT("end"); -} - -template<typename Scalar, typename Data> -EIGEN_DONT_INLINE void transform(const Quaternion<Scalar>& t, Data& data) -{ - EIGEN_ASM_COMMENT("begin quat"); - for(int i=0;i<data.cols();++i) - data.col(i) = t * data.col(i); - EIGEN_ASM_COMMENT("end quat"); -} - -template<typename T> struct ToRotationMatrixWrapper -{ - enum {Dim = T::Dim}; - typedef typename T::Scalar Scalar; - ToRotationMatrixWrapper(const T& o) : object(o) {} - T object; -}; - -template<typename QType, typename Data> -EIGEN_DONT_INLINE void transform(const ToRotationMatrixWrapper<QType>& t, Data& data) -{ - EIGEN_ASM_COMMENT("begin quat via mat"); - data = t.object.toRotationMatrix() * data; - EIGEN_ASM_COMMENT("end quat via mat"); -} - -template<typename Scalar, int Dim, typename Data> -EIGEN_DONT_INLINE void transform(const Transform<Scalar,Dim,Projective>& t, Data& data) -{ - data = (t * data.colwise().homogeneous()).template block<Dim,Data::ColsAtCompileTime>(0,0); -} - -template<typename T> struct get_dim { enum { Dim = T::Dim }; }; -template<typename S, int R, int C, int O, int MR, int MC> -struct get_dim<Matrix<S,R,C,O,MR,MC> > { enum { Dim = R }; }; - -template<typename Transformation, int N> -struct bench_impl -{ - static EIGEN_DONT_INLINE void run(const Transformation& t) - { - Matrix<typename Transformation::Scalar,get_dim<Transformation>::Dim,N> data; - data.setRandom(); - bench_impl<Transformation,N-1>::run(t); - BenchTimer timer; - BENCH(timer,10,100000,transform(t,data)); - cout.width(9); - cout << timer.best() << " "; - } -}; - - -template<typename Transformation> -struct bench_impl<Transformation,0> -{ - static EIGEN_DONT_INLINE void run(const Transformation&) {} -}; - -template<typename Transformation> -EIGEN_DONT_INLINE void bench(const std::string& msg, const Transformation& t) -{ - cout << msg << " "; - bench_impl<Transformation,SIZE>::run(t); - std::cout << "\n"; -} - -int main(int argc, char ** argv) -{ - Matrix<Scalar,3,4> mat34; mat34.setRandom(); - Transform<Scalar,3,Isometry> iso3(mat34); - Transform<Scalar,3,Affine> aff3(mat34); - Transform<Scalar,3,AffineCompact> caff3(mat34); - Transform<Scalar,3,Projective> proj3(mat34); - Quaternion<Scalar> quat;quat.setIdentity(); - ToRotationMatrixWrapper<Quaternion<Scalar> > quatmat(quat); - Matrix<Scalar,3,3> mat33; mat33.setRandom(); - - cout.precision(4); - std::cout - << "N "; - for(int i=0;i<SIZE;++i) - { - cout.width(9); - cout << i+1 << " "; - } - cout << "\n"; - - bench("matrix 3x3", mat33); - bench("quaternion", quat); - bench("quat-mat ", quatmat); - bench("isometry3 ", iso3); - bench("affine3 ", aff3); - bench("c affine3 ", caff3); - bench("proj3 ", proj3); -} - |