]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/ublas/benchmarks/bench5/assignment_bench.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / numeric / ublas / benchmarks / bench5 / assignment_bench.cpp
1 //
2 // Copyright (c) 2010 Athanasios Iliopoulos
3 //
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)
7 //
8
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>
14
15 using namespace boost::numeric::ublas;
16
17 int main() {
18
19 boost::timer timer;
20
21 unsigned int iterations = 1000000000;
22 double elapsed_exp, elapsed_assigner;
23
24 std::cout << "Ublas vector<double> Benchmarks------------------------ " << "\n";
25
26 {
27 std::cout << "Size 2 vector: " << "\n";
28 vector<double> a(2);
29
30 timer.restart();
31 for(unsigned int i=0; i!=iterations; i++) {
32 a(0)=0; a(1)=1;
33 }
34 elapsed_exp = timer.elapsed();
35 std::cout << "Explicit element assign time: " << elapsed_exp << " secs" << "\n";
36
37 timer.restart();
38 for(unsigned int i=0; i!=iterations; i++)
39 a <<= 0, 1;
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;
43 }
44
45 {
46 std::cout << "Size 3 vector: " << "\n";
47 vector<double> a(3);
48
49 timer.restart();
50 for(unsigned int i=0; i!=iterations; i++) {
51 a(0)=0; a(1)=1; a(2)=2;
52 }
53 elapsed_exp = timer.elapsed();
54 std::cout << "Explicit element assign time: " << elapsed_exp << " secs" << "\n";
55
56 timer.restart();
57 for(unsigned int i=0; i!=iterations; i++)
58 a <<= 0, 1, 2;
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;
62 }
63
64 iterations = 100000000;
65
66 {
67 std::cout << "Size 8 vector: " << "\n";
68 vector<double> a(8);
69
70 timer.restart();
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;
73 }
74 elapsed_exp = timer.elapsed();
75 std::cout << "Explicit element assign time: " << elapsed_exp << " secs" << "\n";
76
77 timer.restart();
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;
83 }
84
85
86 std::cout << "Ublas matrix<double> Benchmarks------------------------ " << "\n";
87
88 iterations = 200000000;
89 {
90 std::cout << "Size 3x3 matrix: " << "\n";
91 matrix<double> a(3,3);
92
93 timer.restart();
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;
98 }
99 elapsed_exp = timer.elapsed();
100 std::cout << "Explicit element assign time: " << elapsed_exp << " secs" << "\n";
101
102 timer.restart();
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;
108 }
109
110 std::cout << "Size 2x2 matrix: " << "\n";
111 iterations = 500000000;
112 {
113 matrix<double> a(2,2);
114
115 timer.restart();
116 for(unsigned int i=0; i!=iterations; i++) {
117 a(0,0)=0; a(0,1)=1;
118 a(1,0)=3; a(1,1)=4;
119 }
120 elapsed_exp = timer.elapsed();
121 std::cout << "Explicit element assign time: " << elapsed_exp << " secs" << "\n";
122
123 timer.restart();
124 for(unsigned int i=0; i!=iterations; i++)
125 a <<= 0, 1, 3, 4;
126 elapsed_assigner = timer.elapsed();
127 std::cout << "Assigner time: " << elapsed_assigner << " secs" << "\n";
128
129 std::cout << "Difference: " << (elapsed_assigner/elapsed_exp-1)*100 << "%" << std::endl;
130
131 timer.restart();
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;
137 }
138
139 return 0;
140 }
141