neodon has asked for the wisdom of the Perl Monks concerning the following question:
Hi, I'm just curious about these variations in performance between creating subs at run-time vs compile-time. Does anyone have some insight into what's going on behind the scenes?
#!/usr/bin/perl use Benchmark; BEGIN { *begin = sub {} } INIT { *init = sub {} } sub declared {} *runtime = sub {}; timethese(50000, { begin => sub { begin for (1 .. 1000) }, init => sub { init for (1 .. 1000) }, declared => sub { declared for (1 .. 1000) }, runtime => sub { runtime for (1 .. 1000) } });
Results:
Benchmark: timing 50000 iterations of begin, declared, init, runtime...
begin: 9 wallclock secs ( 9.31 usr + 0.01 sys = 9.32 CPU) @ 5364.81/s (n=50000)
declared: 10 wallclock secs ( 9.54 usr + 0.01 sys = 9.55 CPU) @ 5235.60/s (n=50000)
init: 2 wallclock secs ( 2.11 usr + 0.00 sys = 2.11 CPU) @ 23696.68/s (n=50000)
runtime: 2 wallclock secs ( 2.08 usr + 0.00 sys = 2.08 CPU) @ 24038.46/s (n=50000)
I am running Perl v5.10.0 on Ubuntu 9.04 (Jaunty) x86_64 2.6.28-17-generic. Let me know if you need more info. Thanks!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Subs created at run-time are faster than those created at compile-time
by ikegami (Patriarch) on Dec 15, 2009 at 15:10 UTC | |
|
Re: Subs created at run-time are faster than those created at compile-time
by Anonymous Monk on Dec 15, 2009 at 15:11 UTC | |
|
Re: Subs created at run-time are faster than those created at compile-time
by neodon (Novice) on Dec 15, 2009 at 15:37 UTC |