Ming - reuse objects instead of generating them again and again
Reuse SWF-objects, not your functions that create SWF-objects. I often see code like:
#!/usr/bin/perl -w
use strict;
use SWF ("Shape");
my $m2 = new SWF::Movie();
#stupid
for (my $i=1;$i<50;$i++) {
my $shape = &makeShape(30,50);
my $s_i = $m2->add($shape);
$s_i->moveTo($i*5,$i);
}
$m2->nextFrame();
$m2->save("profiling_stupid.swf");
sub makeShape{
my ($x,$y)=@_;
my $s = new SWF::Shape();
$s->drawLine($x,$y);
#etc.
return $s;
}
This creates 50 objects, and 50 shape definitions will hang around in your swf, blowing it up like a MS WORD blows fast up its documents just for typing a few stupid sentences.
Why not:
#!/usr/bin/perl -w
use strict;
use SWF ("Shape");
my $m1 = new SWF::Movie();
#clever
my $shape = &makeShape(30,50);
for (my $i=1;$i<50;$i++) {
my $s_i = $m1->add($shape);
$s_i-<moveTo($i*5,$i);
}
$m1-<nextFrame();
$m1-<save("profiling_clever.swf");
shb makeShape{
my ($x,$y)=@_;
my $s = new SWF::Shape();
$s-<drawLine($x,$y);
#etc.
return $s;
}
This has exact the same result in the flashplayer, but only has to hold one shapeobjectdefinition in the SWF.