]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/ublas/benchmarks/bench5/assignment_bench.cpp
2 // Copyright (c) 2010 Athanasios Iliopoulos
4 // Distributed under the Boost Software License, Version 1.0. (See
5 // accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
9 #include <boost/numeric/ublas/assignment.hpp>
10 #include <boost/numeric/ublas/vector.hpp>
11 #include <boost/numeric/ublas/matrix.hpp>
12 #include <boost/numeric/ublas/io.hpp>
13 #include <boost/timer.hpp>
15 using namespace boost::numeric::ublas
;
21 unsigned int iterations
= 1000000000;
22 double elapsed_exp
, elapsed_assigner
;
24 std::cout
<< "Ublas vector<double> Benchmarks------------------------ " << "\n";
27 std::cout
<< "Size 2 vector: " << "\n";
31 for(unsigned int i
=0; i
!=iterations
; i
++) {
34 elapsed_exp
= timer
.elapsed();
35 std::cout
<< "Explicit element assign time: " << elapsed_exp
<< " secs" << "\n";
38 for(unsigned int i
=0; i
!=iterations
; i
++)
40 elapsed_assigner
= timer
.elapsed();
41 std::cout
<< "Assigner time: " << elapsed_assigner
<< " secs" << "\n";
42 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;
46 std::cout
<< "Size 3 vector: " << "\n";
50 for(unsigned int i
=0; i
!=iterations
; i
++) {
51 a(0)=0; a(1)=1; a(2)=2;
53 elapsed_exp
= timer
.elapsed();
54 std::cout
<< "Explicit element assign time: " << elapsed_exp
<< " secs" << "\n";
57 for(unsigned int i
=0; i
!=iterations
; i
++)
59 elapsed_assigner
= timer
.elapsed();
60 std::cout
<< "Assigner time: " << elapsed_assigner
<< " secs" << "\n";
61 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;
64 iterations
= 100000000;
67 std::cout
<< "Size 8 vector: " << "\n";
71 for(unsigned int i
=0; i
!=iterations
; i
++) {
72 a(0)=0; a(1)=1; a(2)=2; a(3)=3; a(4)=4; a(5)=5; a(6)=6; a(7)=7;
74 elapsed_exp
= timer
.elapsed();
75 std::cout
<< "Explicit element assign time: " << elapsed_exp
<< " secs" << "\n";
78 for(unsigned int i
=0; i
!=iterations
; i
++)
79 a
<<= 0, 1, 2, 3, 4, 5, 6, 7;
80 elapsed_assigner
= timer
.elapsed();
81 std::cout
<< "Assigner time: " << elapsed_assigner
<< " secs" << "\n";
82 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;
86 std::cout
<< "Ublas matrix<double> Benchmarks------------------------ " << "\n";
88 iterations
= 200000000;
90 std::cout
<< "Size 3x3 matrix: " << "\n";
91 matrix
<double> a(3,3);
94 for(unsigned int i
=0; i
!=iterations
; i
++) {
95 a(0,0)=0; a(0,1)=1; a(0,2)=2;
96 a(1,0)=3; a(1,1)=4; a(1,2)=5;
97 a(2,0)=6; a(2,1)=7; a(2,2)=8;
99 elapsed_exp
= timer
.elapsed();
100 std::cout
<< "Explicit element assign time: " << elapsed_exp
<< " secs" << "\n";
103 for(unsigned int i
=0; i
!=iterations
; i
++)
104 a
<<= 0, 1, 2, 3, 4, 5, 6, 7, 8;
105 elapsed_assigner
= timer
.elapsed();
106 std::cout
<< "Assigner time: " << elapsed_assigner
<< " secs" << "\n";
107 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;
110 std::cout
<< "Size 2x2 matrix: " << "\n";
111 iterations
= 500000000;
113 matrix
<double> a(2,2);
116 for(unsigned int i
=0; i
!=iterations
; i
++) {
120 elapsed_exp
= timer
.elapsed();
121 std::cout
<< "Explicit element assign time: " << elapsed_exp
<< " secs" << "\n";
124 for(unsigned int i
=0; i
!=iterations
; i
++)
126 elapsed_assigner
= timer
.elapsed();
127 std::cout
<< "Assigner time: " << elapsed_assigner
<< " secs" << "\n";
129 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;
132 for(unsigned int i
=0; i
!=iterations
; i
++)
133 a
<<= traverse_policy::by_row_no_wrap(), 0, 1, next_row(), 3, 4;
134 elapsed_assigner
= timer
.elapsed();
135 std::cout
<< "Assigner time no_wrap: " << elapsed_assigner
<< " secs" << "\n";
136 std::cout
<< "Difference: " << (elapsed_assigner
/elapsed_exp
-1)*100 << "%" << std::endl
;