From: Shiar Date: Sat, 19 Jul 2008 20:39:36 +0000 (+0200) Subject: Data::StarCraft::Tileset->tileavg optimization X-Git-Url: http://git.shiar.nl/perl/schtarr.git/commitdiff_plain/ff9b85e54ab93517afc757390ed3750aafc48e03 Data::StarCraft::Tileset->tileavg optimization Split out summation of each color channel, similar to col(). This is quite significant (can easily save over a second to run for all tiles in a map). --- diff --git a/Data-StarCraft/lib/Data/StarCraft/Tileset.pm b/Data-StarCraft/lib/Data/StarCraft/Tileset.pm index 891c12b..f1fcd3e 100644 --- a/Data-StarCraft/lib/Data/StarCraft/Tileset.pm +++ b/Data-StarCraft/lib/Data/StarCraft/Tileset.pm @@ -169,7 +169,9 @@ sub tileavg { $info->{walk} = sum(@{ $tile->{subtype} }) >> 4; my @rgb; for my $subcol (@{ $tile->{subcol} }) { - $rgb[$_] += $subcol->[$_] for 0 .. 2; + $rgb[0] += $subcol->[0]; + $rgb[1] += $subcol->[1]; # seperate for speed + $rgb[2] += $subcol->[2]; } $info->{col} = [ map {$_ >> 4} @rgb ]; return $info;