1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use strict;
use warnings;
use Data::Dumper;
use Carp;
use Benchmark;
timethese($ARGV[0] || 100, {
quotes => sub {
for (1..100) {
my $x = "<img src=\"musterbild.jpg\" alt=\"Muster text\" border=\"0\">";
}
},
qq1 => sub {
for (1..100) {
my $x = qq|<img src="musterbild.jpg" alt="Muster text" border="0">|;
}
},
qq2 => sub {
for (1..100) {
my $x = qq~<img src="musterbild.jpg" alt="Muster text" border="0">~;
}
}
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
qq2: 3 wallclock secs ( 2.54 usr + 0.00 sys = 2.54 CPU) @ 39370.08/s (n=100000)
quotes: 2 wallclock secs ( 2.54 usr + 0.00 sys = 2.54 CPU) @ 39370.08/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.62 usr + 0.00 sys = 2.62 CPU) @ 38167.94/s (n=100000)
qq2: 3 wallclock secs ( 2.63 usr + 0.00 sys = 2.63 CPU) @ 38022.81/s (n=100000)
quotes: 2 wallclock secs ( 2.52 usr + 0.00 sys = 2.52 CPU) @ 39682.54/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.61 usr + 0.00 sys = 2.61 CPU) @ 38314.18/s (n=100000)
qq2: 2 wallclock secs ( 2.61 usr + 0.00 sys = 2.61 CPU) @ 38314.18/s (n=100000)
quotes: 1 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.57 usr + 0.00 sys = 2.57 CPU) @ 38910.51/s (n=100000)
qq2: 2 wallclock secs ( 2.52 usr + 0.00 sys = 2.52 CPU) @ 39682.54/s (n=100000)
quotes: 3 wallclock secs ( 2.55 usr + 0.00 sys = 2.55 CPU) @ 39215.69/s (n=100000)
Benchmark: timing 100000 iterations of qq1, qq2, quotes...
qq1: 3 wallclock secs ( 2.56 usr + 0.00 sys = 2.56 CPU) @ 39062.50/s (n=100000)
qq2: 3 wallclock secs ( 2.51 usr + 0.00 sys = 2.51 CPU) @ 39840.64/s (n=100000)
quotes: 2 wallclock secs ( 2.53 usr + 0.00 sys = 2.53 CPU) @ 39525.69/s (n=100000)
die unterschiede sind also unterhalb dessen, was man als anlass für optimierung nehmen würde.
ausserdem liegt nicht immer dieselbe sub vorne.