Phoenix.pm: perlcc
Scott Walters
scott at illogics.org
Sat Mar 8 05:37:48 CST 2003
Hi folks.
I'm trying to squeeze every ounce of performance possible out of my server
machine, the Apple 7300/180 (the 180 is for 180 mhz).
I have one script that is getting hit a lot and should respond quickly,
and supposedly, Perl spends a lot if not most of its time just parsing
the source code, so I gave perlcc a whirl.
To those not familiar, perlcc lets perl parse the program, than dumps
the symbol table and opcode tree as a bunch of C datastructures,
pre initialized, along with the glue needed to link to libperl,
saving a program from having to parse the .pl file.
normal perlcc binary
wiki.cgi .301 + .678 .361 + 1.547
assemble.cgi 1.607 + 1.191 1.653 + 2.509
Time is user time + system time.
Instead of being faster, a compiled binary is slower.
The perlcc binary takes marginally more user time, but more than twice as
much system time. Short of profiling the exe and perl, which I don't even
know how to do, does anyone know why this might be? The binaries
are around 2 megs, so they should be competitive with the memory footprint
of perl itself. Perhaps time spent in ld, linking to the shared library?
Time spent doing VM stuff?
Of course, I could do FastCGI or something, but I'm curious =)
It's hard to imagine that the Perl parser is faster at constructing an
opcode tree than just bringing an already compiled one in from disc.
Thanks,
-scott
More information about the Phoenix-pm
mailing list