Re: Hm. ItemFactory vs. gtk2-perl 0.90 ? :)
- From: Ross McFarland <rwmcfa1 neces com>
- To: gtk-perl-list gnome org
- Subject: Re: Hm. ItemFactory vs. gtk2-perl 0.90 ? :)
- Date: 22 Jul 2003 23:20:29 -0400
On Tue, 2003-07-22 at 18:15, Chas Owens wrote:
Quoting Joe Smith <jes martnet com>:
<snip>
I took a shot at avoiding all the copying to a bunch of local variables;
the guts of it, as tested in the benchmark, are as fast as Ross' or
faster (see the attached diff). Hah!
</snip>
Cheating! Cheating! The variable @j2_keys is empty when the function is called
(it doesn't get filled until AFTER the benchmarks run, you need a BEGIN {}).
You moved code out of the function. You should allow the brett function to use
that variable as well and your error message is not equivalent. And still you
only beat the ross function in the fourth case -- which is the unlikely
"everything is wrong" case.
this code:
my @j2_keys;
my $j2_entry;
BEGIN
{
@j2_keys = qw(path accelerator callback action item_type extra type);
$j2_entry = {};
}
sub joe2 {
my $user_entry = shift;
@$j2_entry{ j2_keys} = @$user_entry{ j2_keys};
my @bad = grep(!exists $j2_entry->{$_}, keys %$user_entry);
foreach (@bad)
{
carp("Gtk Item Factory Entry; unknown key ($_) ");
}
}
the foreach bad code is much like brett's code, except that there's the
local array bad, if you're trying to get rid of local vars then remove
the my @bad and put that in the foreach. doing this made no noticeable
difference in the performance. i assume that @bad = grep, foreach (bad)
and foreach (grep) both end up in a local var, it's just whether you put
a name to it or not, same as foreach my $key () or foreach ().
doing the above and changing all of the error message to print the same
sentence for each bad key makes the playing field level. (as far as i
can tell.)
results:
Rate brett joe2 joe ross
brett 14309/s -- -30% -31% -49%
joe2 20484/s 43% -- -1% -28%
joe 20678/s 45% 1% -- -27%
ross 28284/s 98% 38% 37% --
Rate brett joe2 joe ross
brett 13743/s -- -29% -29% -46%
joe2 19265/s 40% -- -1% -25%
joe 19486/s 42% 1% -- -24%
ross 25603/s 86% 33% 31% --
Rate brett joe joe2 ross
brett 19121/s -- -28% -42% -55%
joe 26429/s 38% -- -20% -38%
joe2 33154/s 73% 25% -- -22%
ross 42290/s 121% 60% 28% --
Rate brett joe2 joe ross
brett 12442/s -- -27% -31% -36%
joe2 17014/s 37% -- -5% -12%
joe 17926/s 44% 5% -- -8%
ross 19425/s 56% 14% 8% --
this has been interesting if nothing else. the whole reason i learned xs
stuff in the first place is that somethings need to get down to where
there's plenty of speed available, image processing etc, it's always
good/interesting to try a bunch of stuff and see what cost what in terms
of performance.
later,
-rm
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]