]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/ublas/benchmarks/bench2/bench2.cpp
2 // Copyright (c) 2000-2002
3 // Joerg Walter, Mathias Koch
5 // Distributed under the Boost Software License, Version 1.0. (See
6 // accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
9 // The authors gratefully acknowledge the support of
10 // GeNeSys mbH & Co. KG in producing this work.
15 void header (std::string text
) {
16 std::cout
<< text
<< std::endl
;
23 void operator () (int runs
) const {
27 for (int i
= 0; i
< runs
; ++ i
) {
31 footer
<value_type
> () (0, 1, runs
, t
.elapsed ());
33 catch (std::exception
&e
) {
34 std::cout
<< e
.what () << std::endl
;
39 struct peak_c_multiplies
{
42 void operator () (int runs
) const {
46 for (int i
= 0; i
< runs
; ++ i
) {
50 footer
<value_type
> () (0, 1, runs
, t
.elapsed ());
52 catch (std::exception
&e
) {
53 std::cout
<< e
.what () << std::endl
;
59 void peak
<T
>::operator () (int runs
) {
63 peak_c_plus
<T
> () (runs
);
65 header ("multiplies");
66 peak_c_multiplies
<T
> () (runs
);
70 template <typename scalar
>
71 void do_bench (std::string type_string
, int scale
)
74 peak
<scalar
> () (1000000 * scale
);
76 header (type_string
+ ", 3");
77 bench_1
<scalar
, 3> () (1000000 * scale
);
78 bench_2
<scalar
, 3> () (300000 * scale
);
79 bench_3
<scalar
, 3> () (100000 * scale
);
81 header (type_string
+ ", 10");
82 bench_1
<scalar
, 10> () (300000 * scale
);
83 bench_2
<scalar
, 10> () (30000 * scale
);
84 bench_3
<scalar
, 10> () (3000 * scale
);
86 header (type_string
+ ", 30");
87 bench_1
<scalar
, 30> () (100000 * scale
);
88 bench_2
<scalar
, 30> () (3000 * scale
);
89 bench_3
<scalar
, 30> () (100 * scale
);
91 header (type_string
+ ", 100");
92 bench_1
<scalar
, 100> () (30000 * scale
);
93 bench_2
<scalar
, 100> () (300 * scale
);
94 bench_3
<scalar
, 100> () (3 * scale
);
97 int main (int argc
, char *argv
[]) {
101 scale
= std::atoi (argv
[1]);
104 do_bench
<float> ("FLOAT", scale
);
108 do_bench
<double> ("DOUBLE", scale
);
111 #ifdef USE_STD_COMPLEX
113 do_bench
<std::complex<float> > ("COMPLEX<FLOAT>", scale
);
117 do_bench
<std::complex<double> > ("COMPLEX<DOUBLE>", scale
);