You are right. But the problem was the overhead loading the POSIX-module
copared to loading some tiny perl-module. If you use that function 100 times
the loadingtime is really negligible.
Am Mittwoch, 29. Januar 2003 13:46 schrieb Leon Brocard:
> Tommi M�kitalo sent the following bits through the ether:
> > Then you can do perl -e 'use Math::Log10; print log10(43.2);', which is 3
> > times faster than perl -e 'use POSIX qw(log10); print log10(43.2);'.
>
> Did someone say something about a benchmark?
>
> #!/usr/bin/perl -w
> use strict;
> use Benchmark qw(cmpthese);
> use POSIX qw(log10);
>
> cmpthese(-10, {
> 'POSIX' => sub {
> foreach my $i (1..100) {
> my $x = log10($i);
> }
> },
> 'Perl' => sub {
> foreach my $i (1..100) {
> my $x = log($i)/log(10);
> }
> },
> });
>
> Which on my computer gives:
> Benchmark: running POSIX, Perl for at least 10 CPU seconds...
> POSIX: 1 wallclock secs (10.67 usr + 0.01 sys = 10.68 CPU) @
> 369.85/s (n=3950) Perl: 1 wallclock secs (10.69 usr + 0.01 sys = 10.70
> CPU) @ 413.74/s (n=4427) Rate POSIX Perl
> POSIX 370/s -- -11%
> Perl 414/s 12% --
>
> Leon
>
> ps I think a module for this is a little over the top, however
> I note that Python has log10 in its math package, Ruby
> has log10 in its Math package, and Java does not ship log10
> in java.lang.Math.