]> Creatis software - CreaPhase.git/blob - octave_packages/benchmark-1.1.1/benchmark_intmath.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / benchmark-1.1.1 / benchmark_intmath.m
1 % Copyright (C) 2008  Jaroslav Hajek <highegg@gmail.com>
2
3 % This file is part of OctaveForge.
4
5 % OctaveForge is free software; you can redistribute it and/or modify
6 % it under the terms of the GNU General Public License as published by
7 % the Free Software Foundation; either version 2 of the License, or
8 % (at your option) any later version.
9
10 % This program is distributed in the hope that it will be useful,
11 % but WITHOUT ANY WARRANTY; without even the implied warranty of
12 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 % GNU General Public License for more details.
14
15 % You should have received a copy of the GNU General Public License
16 % along with this software; see the file COPYING.  If not, see
17 % <http://www.gnu.org/licenses/>.
18
19
20 % function benchmark_intmath (n, ratio)
21 % description:
22 % Test speed of integer math & conversions.
23 %
24 % arguments:
25 % n = array size
26 % ratio = ratio of intmath for generating integers
27 %
28 % results:
29 % time_uint8_conv = time to convert real vector to uint8
30 % time_uint8_add = time to add two uint8 vectors
31 % time_uint8_sub = time to subtract two uint8 vectors
32 % time_uint8_mul = time to multiply two uint8 vectors
33 % time_uint8_div = time to divide two uint8 vectors
34 % time_int8_conv = time to convert real vector to int8
35 % time_int8_add = time to add two int8 vectors
36 % time_int8_sub = time to subtract two int8 vectors
37 % time_int8_mul = time to multiply two int8 vectors
38 % time_int8_div = time to divide two int8 vectors
39 % time_uint16_conv = time to convert real vector to uint16
40 % time_uint16_add = time to add two uint16 vectors
41 % time_uint16_sub = time to subtract two uint16 vectors
42 % time_uint16_mul = time to multiply two uint16 vectors
43 % time_uint16_div = time to divide two uint16 vectors
44 % time_int16_conv = time to convert real vector to int16
45 % time_int16_add = time to add two int16 vectors
46 % time_int16_sub = time to subtract two int16 vectors
47 % time_int16_mul = time to multiply two int16 vectors
48 % time_int16_div = time to divide two int16 vectors
49 % time_uint32_conv = time to convert real vector to uint32
50 % time_uint32_add = time to add two uint32 vectors
51 % time_uint32_sub = time to subtract two uint32 vectors
52 % time_uint32_mul = time to multiply two uint32 vectors
53 % time_uint32_div = time to divide two uint32 vectors
54 % time_int32_conv = time to convert real vector to int32
55 % time_int32_add = time to add two int32 vectors
56 % time_int32_sub = time to subtract two int32 vectors
57 % time_int32_mul = time to multiply two int32 vectors
58 % time_int32_div = time to divide two int32 vectors
59 %
60
61 function results = benchmark_intmath (n, ratio)
62
63   benchutil_default_arg ('n', 1e7);
64   benchutil_default_arg ('ratio', 0.6);
65
66   benchutil_initialize (mfilename)
67
68   x = ratio * double (intmax ('uint8')) * rand(n, 1);
69   y = ratio * double (intmax ('uint8')) * rand(n, 1);
70
71   x = uint8 (x);
72   tic; y = uint8 (y); time_uint8_conv = toc;
73   benchutil_set_result ('time_uint8_conv')
74
75   tic; xy = x + y; time_uint8_add = toc;
76   benchutil_set_result ('time_uint8_add')
77
78   tic; xy = x - y; time_uint8_sub = toc;
79   benchutil_set_result ('time_uint8_sub')
80
81   tic; xy = x .* y; time_uint8_mul = toc;
82   benchutil_set_result ('time_uint8_mul')
83
84   tic; xy = x ./ y; time_uint8_div = toc;
85   benchutil_set_result ('time_uint8_div')
86
87   x = ratio * double (intmax ('int8')) * (2 * rand(n, 1) - 1);
88   y = ratio * double (intmax ('int8')) * (2 * rand(n, 1) - 1);
89
90   x = int8 (x);
91   tic; y = int8 (y); time_int8_conv = toc;
92   benchutil_set_result ('time_int8_conv')
93
94   tic; xy = x + y; time_int8_add = toc;
95   benchutil_set_result ('time_int8_add')
96
97   tic; xy = x - y; time_int8_sub = toc;
98   benchutil_set_result ('time_int8_sub')
99
100   tic; xy = x .* y; time_int8_mul = toc;
101   benchutil_set_result ('time_int8_mul')
102
103   tic; xy = x ./ y; time_int8_div = toc;
104   benchutil_set_result ('time_int8_div')
105
106   x = ratio * double (intmax ('uint16')) * rand(n, 1);
107   y = ratio * double (intmax ('uint16')) * rand(n, 1);
108
109   x = uint16 (x);
110   tic; y = uint16 (y); time_uint16_conv = toc;
111   benchutil_set_result ('time_uint16_conv')
112
113   tic; xy = x + y; time_uint16_add = toc;
114   benchutil_set_result ('time_uint16_add')
115
116   tic; xy = x - y; time_uint16_sub = toc;
117   benchutil_set_result ('time_uint16_sub')
118
119   tic; xy = x .* y; time_uint16_mul = toc;
120   benchutil_set_result ('time_uint16_mul')
121
122   tic; xy = x ./ y; time_uint16_div = toc;
123   benchutil_set_result ('time_uint16_div')
124
125   x = ratio * double (intmax ('int16')) * (2 * rand(n, 1) - 1);
126   y = ratio * double (intmax ('int16')) * (2 * rand(n, 1) - 1);
127
128   x = int16 (x);
129   tic; y = int16 (y); time_int16_conv = toc;
130   benchutil_set_result ('time_int16_conv')
131
132   tic; xy = x + y; time_int16_add = toc;
133   benchutil_set_result ('time_int16_add')
134
135   tic; xy = x - y; time_int16_sub = toc;
136   benchutil_set_result ('time_int16_sub')
137
138   tic; xy = x .* y; time_int16_mul = toc;
139   benchutil_set_result ('time_int16_mul')
140
141   tic; xy = x ./ y; time_int16_div = toc;
142   benchutil_set_result ('time_int16_div')
143
144   x = ratio * double (intmax ('uint32')) * rand(n, 1);
145   y = ratio * double (intmax ('uint32')) * rand(n, 1);
146
147   x = uint32 (x);
148   tic; y = uint32 (y); time_uint32_conv = toc;
149   benchutil_set_result ('time_uint32_conv')
150
151   tic; xy = x + y; time_uint32_add = toc;
152   benchutil_set_result ('time_uint32_add')
153
154   tic; xy = x - y; time_uint32_sub = toc;
155   benchutil_set_result ('time_uint32_sub')
156
157   tic; xy = x .* y; time_uint32_mul = toc;
158   benchutil_set_result ('time_uint32_mul')
159
160   tic; xy = x ./ y; time_uint32_div = toc;
161   benchutil_set_result ('time_uint32_div')
162
163   x = ratio * double (intmax ('int32')) * (2 * rand(n, 1) - 1);
164   y = ratio * double (intmax ('int32')) * (2 * rand(n, 1) - 1);
165
166   x = int32 (x);
167   tic; y = int32 (y); time_int32_conv = toc;
168   benchutil_set_result ('time_int32_conv')
169
170   tic; xy = x + y; time_int32_add = toc;
171   benchutil_set_result ('time_int32_add')
172
173   tic; xy = x - y; time_int32_sub = toc;
174   benchutil_set_result ('time_int32_sub')
175
176   tic; xy = x .* y; time_int32_mul = toc;
177   benchutil_set_result ('time_int32_mul')
178
179   tic; xy = x ./ y; time_int32_div = toc;
180   benchutil_set_result ('time_int32_div')
181
182