3 use Benchmark qw(:hireswallclock countit);
6 my $im = Imager->new(xsize => 1000, ysize => 1000);
7 my $im_pal = Imager->new(xsize => 1000, ysize => 1000, type => "paletted");
8 my @colors = map Imager::Color->new($_), qw/red green blue white black/;
9 $im_pal->addcolors(colors => \@colors);
10 my $color = $colors[0];
11 my $other = Imager::Color->new("pink");
17 $im->box(xmax => 10, ymax => 10, color => $other)
21 $im->box(xmax => 10, ymax => 10, color => "pink")
25 $im->box(xmax => 10, ymax => 10)
29 $im->box(xmax => 100, ymax => 100, color => $other)
33 $im->box(xmax => 500, ymax => 500, color => $other)
37 $im->box(color => $other)
41 $im_pal->box(xmax => 10, ymax => 10, color => $color)
45 $im_pal->box(xmax => 100, ymax => 100, color => $color)
49 $im_pal->box(xmax => 500, ymax => 500, color => $color)
53 $im_pal->box(color => $color)
58 $im->box(xmax => 10, ymax => 10, filled => 1, color => $other)
62 $im->box(xmax => 10, ymax => 10, filled => 1, color => "pink")
66 $im->box(xmax => 10, ymax => 10, filled => 1)
70 $im->box(xmax => 100, ymax => 100, filled => 1, color => $other)
74 $im->box(xmax => 500, ymax => 500, filled => 1, color => $other)
78 $im->box(color => $other, filled => 1)
82 $im_pal->box(xmax => 10, ymax => 10, filled => 1, color => $color)
86 $im_pal->box(xmax => 100, ymax => 100, filled => 1, color => $color)
90 $im_pal->box(xmax => 500, ymax => 500, filled => 1, color => $color)
94 $im_pal->box(filled => 1, color => $color)
100 $im_pal->type eq "paletted" or die "Not paletted anymore";
103 my ($limit, $what) = @_;
105 for my $key (sort keys %$what) {
106 my $bench = countit($limit, $what->{$key});
107 printf "$key: %.1f /s (%f / iter)\n", $bench->iters / $bench->cpu_p,
108 $bench->cpu_p / $bench->iters;
116 box0010: 397.7 /s (0.002514 / iter)
117 box0010c: 3.3 /s (0.305882 / iter)
118 box0010d: 399.6 /s (0.002502 / iter)
119 box0100: 329.5 /s (0.003035 / iter)
120 box0500: 191.5 /s (0.005223 / iter)
121 box1000: 130.6 /s (0.007657 / iter)
122 fbox0010: 372.3 /s (0.002686 / iter)
123 fbox0010c: 3.3 /s (0.300588 / iter)
124 fbox0010d: 383.2 /s (0.002610 / iter)
125 fbox0100: 63.8 /s (0.015685 / iter)
126 fbox0500: 2.8 /s (0.361429 / iter)
127 fbox1000: 0.7 /s (1.435000 / iter)
128 fpalbox0010: 370.9 /s (0.002696 / iter)
129 fpalbox0100: 53.2 /s (0.018799 / iter)
130 fpalbox0500: 2.4 /s (0.413077 / iter)
131 fpalbox1000: 0.6 /s (1.700000 / iter)
132 palbox0010: 390.2 /s (0.002563 / iter)
133 palbox0100: 316.9 /s (0.003155 / iter)
134 palbox0500: 171.8 /s (0.005820 / iter)
135 palbox1000: 115.0 /s (0.008694 / iter)
139 box0010: 786.0 /s (0.001272 / iter)
140 box0010c: 3.3 /s (0.300000 / iter)
141 box0010d: 463.7 /s (0.002157 / iter)
142 box0100: 556.6 /s (0.001797 / iter)
143 box0500: 254.4 /s (0.003930 / iter)
144 box1000: 154.8 /s (0.006460 / iter)
145 fbox0010: 700.9 /s (0.001427 / iter)
146 fbox0010c: 3.3 /s (0.302353 / iter)
147 fbox0010d: 437.0 /s (0.002288 / iter)
148 fbox0100: 69.2 /s (0.014444 / iter)
149 fbox0500: 2.8 /s (0.357143 / iter)
150 fbox1000: 0.7 /s (1.437500 / iter)
151 fpalbox0010: 673.5 /s (0.001485 / iter)
152 fpalbox0100: 46.8 /s (0.021377 / iter)
153 fpalbox0500: 2.0 /s (0.505000 / iter)
154 fpalbox1000: 0.5 /s (2.140000 / iter)
155 palbox0010: 740.9 /s (0.001350 / iter)
156 palbox0100: 473.2 /s (0.002113 / iter)
157 palbox0500: 186.2 /s (0.005371 / iter)
158 palbox1000: 109.1 /s (0.009167 / iter)
160 re-work i_box_filled():
162 box0010: 783.0 /s (0.001277 / iter)
163 box0010c: 3.3 /s (0.300588 / iter)
164 box0010d: 463.7 /s (0.002157 / iter)
165 box0100: 548.2 /s (0.001824 / iter)
166 box0500: 250.2 /s (0.003997 / iter)
167 box1000: 155.1 /s (0.006448 / iter)
168 fbox0010: 743.7 /s (0.001345 / iter)
169 fbox0010c: 3.3 /s (0.302941 / iter)
170 fbox0010d: 448.3 /s (0.002231 / iter)
171 fbox0100: 147.8 /s (0.006765 / iter)
172 fbox0500: 7.6 /s (0.132308 / iter)
173 fbox1000: 1.9 /s (0.521000 / iter)
174 fpalbox0010: 784.9 /s (0.001274 / iter)
175 fpalbox0100: 424.7 /s (0.002355 / iter)
176 fpalbox0500: 42.6 /s (0.023496 / iter)
177 fpalbox1000: 11.4 /s (0.087966 / iter)
178 palbox0010: 778.8 /s (0.001284 / iter)
179 palbox0100: 541.5 /s (0.001847 / iter)
180 palbox0500: 238.0 /s (0.004203 / iter)
181 palbox1000: 141.1 /s (0.007088 / iter)
183 optimize getwidth/getheight:
185 box0010: 832.5 /s (0.001201 / iter)
186 box0010c: 3.4 /s (0.297647 / iter)
187 box0010d: 491.3 /s (0.002035 / iter)
188 box0100: 594.7 /s (0.001682 / iter)
189 box0500: 259.1 /s (0.003859 / iter)
190 box1000: 158.5 /s (0.006310 / iter)
191 fbox0010: 798.1 /s (0.001253 / iter)
192 fbox0010c: 3.3 /s (0.300588 / iter)
193 fbox0010d: 477.7 /s (0.002093 / iter)
194 fbox0100: 148.5 /s (0.006735 / iter)
195 fbox0500: 7.5 /s (0.134103 / iter)
196 fbox1000: 1.9 /s (0.530000 / iter)
197 fpalbox0010: 829.0 /s (0.001206 / iter)
198 fpalbox0100: 444.1 /s (0.002252 / iter)
199 fpalbox0500: 43.0 /s (0.023260 / iter)
200 fpalbox1000: 11.5 /s (0.087333 / iter)
201 palbox0010: 826.0 /s (0.001211 / iter)
202 palbox0100: 553.2 /s (0.001808 / iter)
203 palbox0500: 242.7 /s (0.004119 / iter)
204 palbox1000: 144.4 /s (0.006923 / iter)
206 pull stuff out of the hash fast:
208 box0010: 1332.0 /s (0.000751 / iter)
209 box0010c: 3.4 /s (0.295882 / iter)
210 box0010d: 646.6 /s (0.001546 / iter)
211 box0100: 805.3 /s (0.001242 / iter)
212 box0500: 293.1 /s (0.003412 / iter)
213 box1000: 161.7 /s (0.006183 / iter)
214 fbox0010: 1215.2 /s (0.000823 / iter)
215 fbox0010c: 3.4 /s (0.295294 / iter)
216 fbox0010d: 600.9 /s (0.001664 / iter)
217 fbox0100: 160.2 /s (0.006241 / iter)
218 fbox0500: 7.6 /s (0.131250 / iter)
219 fbox1000: 1.9 /s (0.519000 / iter)
220 fpalbox0010: 1295.2 /s (0.000772 / iter)
221 fpalbox0100: 547.2 /s (0.001828 / iter)
222 fpalbox0500: 43.8 /s (0.022845 / iter)
223 fpalbox1000: 11.5 /s (0.087333 / iter)
224 palbox0010: 1314.1 /s (0.000761 / iter)
225 palbox0100: 752.2 /s (0.001330 / iter)
226 palbox0500: 269.4 /s (0.003712 / iter)
227 palbox1000: 145.3 /s (0.006884 / iter)
229 make _is_color_object xs
231 box0010: 1359.4 /s (0.000736 / iter)
232 box0010c: 3.4 /s (0.294118 / iter)
233 box0010d: 635.6 /s (0.001573 / iter)
234 box0100: 818.6 /s (0.001222 / iter)
235 box0500: 294.3 /s (0.003398 / iter)
236 box1000: 162.9 /s (0.006140 / iter)
237 fbox0010: 1230.8 /s (0.000813 / iter)
238 fbox0010c: 3.2 /s (0.313125 / iter)
239 fbox0010d: 608.7 /s (0.001643 / iter)
240 fbox0100: 158.5 /s (0.006308 / iter)
241 fbox0500: 7.5 /s (0.134103 / iter)
242 fbox1000: 1.9 /s (0.530000 / iter)
243 fpalbox0010: 1328.8 /s (0.000753 / iter)
244 fpalbox0100: 553.2 /s (0.001808 / iter)
245 fpalbox0500: 43.5 /s (0.022974 / iter)
246 fpalbox1000: 11.4 /s (0.087627 / iter)
247 palbox0010: 1344.8 /s (0.000744 / iter)
248 palbox0100: 783.0 /s (0.001277 / iter)
249 palbox0500: 274.5 /s (0.003643 / iter)
250 palbox1000: 147.9 /s (0.006761 / iter)
252 fix x color table caching check:
254 box0010: 1376.1 /s (0.000727 / iter)
255 box0010c: 257.9 /s (0.003877 / iter)
256 box0010d: 642.4 /s (0.001557 / iter)
257 box0100: 820.2 /s (0.001219 / iter)
258 box0500: 294.0 /s (0.003402 / iter)
259 box1000: 163.2 /s (0.006129 / iter)
260 fbox0010: 1228.5 /s (0.000814 / iter)
261 fbox0010c: 252.8 /s (0.003956 / iter)
262 fbox0010d: 617.8 /s (0.001619 / iter)
263 fbox0100: 158.5 /s (0.006308 / iter)
264 fbox0500: 7.5 /s (0.133846 / iter)
265 fbox1000: 1.9 /s (0.530000 / iter)
266 fpalbox0010: 1343.4 /s (0.000744 / iter)
267 fpalbox0100: 557.3 /s (0.001794 / iter)
268 fpalbox0500: 43.9 /s (0.022759 / iter)
269 fpalbox1000: 11.5 /s (0.087000 / iter)
270 palbox0010: 1365.3 /s (0.000732 / iter)
271 palbox0100: 787.7 /s (0.001270 / iter)
272 palbox0500: 275.6 /s (0.003629 / iter)
273 palbox1000: 148.4 /s (0.006739 / iter)