Data::StarCraft::Tileset->tileavg optimization
authorShiar <shiar@shiar.org>
Sat, 19 Jul 2008 20:39:36 +0000 (22:39 +0200)
committerShiar <shiar@shiar.org>
Sat, 19 Jul 2008 20:39:36 +0000 (22:39 +0200)
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).

Data-StarCraft/lib/Data/StarCraft/Tileset.pm

index 891c12b93c5ae96f48792f06ae6b27ea17f81018..f1fcd3e2ce0182c404b220b594dcdb49cefe63a4 100644 (file)
@@ -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;