The performance of the blessed hash case is dependent on the length of the keys used in the hash: The longer the key, the more time it takes!
You're right, but this isn't the reason that using $self is so much slower. Stringification of references is just slow:
#! /usr/bin/perl use strict; use warnings; use Benchmark qw( cmpthese ); my $self = bless {}, 'SomeClass'; my $string = "$self"; my %a = ( $self => 0 ); my %b = ( $string => 0 ); cmpthese(-1, { self => sub { $a{ $self } = $a{ $self } + 1 }, string => sub { $b{ $string } = $b{ $string } + 1 }, }); __END__ # on my perl 5.8.7 Rate self string self 156393/s -- -83% string 927942/s 493% --
On another minor note, 0+$self yields the same result as the refaddr function.
Unless you overload arithmetic.
In reply to Re^5: Threads and fork and CLONE, oh my!
by adrianh
in thread Threads and fork and CLONE, oh my!
by xdg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |