Python 2 times slower than Perl

Xu, C.S. xucs007 at yahoo.com
Wed Jul 18 14:55:36 EDT 2001


Just spent a little time to compare 4 stupid again algorithms
(changed a little bit from last time) for both python and perl
(codes attached) on two systems (SunOS and Linux):
	1. while loop, global variables
	2. for loop, global variables
	3. while loop, local variables (in function)
	4. for loop, local variables (in function)
I used `time [1234].p[yl]` to get the time info. The user time
is as follows:

PII 450MHz, Dell Precision 4100 Desktop, SunOS 5.8 i386
                #1      #2      #3      #4
Python 2.1a1:   5.1     3.1     4.5     2.7
Perl 5.005_03:  1.8     1.6     1.7     1.6


PIII 1GHz, MTech 8500 Notebook, i386 Linux (Mandrake 8.0, kernal 2.4)
                #1      #2      #3      #4
Python 2.0:     2.34    1.38    1.54    0.98
Perl 5.6.0:     0.95    1.22    0.95    1.21

The closest match is on Linux, 0.98 (python#4) vs. 0.95 (perl#1,#3).
Python still can't beat Perl, :-(  But I will continue to use Python
to do uncritical data analysis, :-)



P.S. Codes are:
####################### 1.pl: while loop, global var #####################
#!/usr/bin/env perl
$i = 0;
$j = 0.;
while ($i < 1e6) {
        $j += $i * 2.5;
        $i++;
}
print $i, ' ', $j, "\n";

####################### 1.py: while loop, global var #####################
#!/usr/bin/env python
i, j = 0, 0.
while i<1e6:
        j += i*2.5
        i += 1
print i, j



####################### 2.pl: for loop, global var #####################
#!/usr/bin/env perl
$j = 0.;
for ($i=0; $i < 1e6; $i++) {
        $j += $i * 2.5;
}
print $i, ' ', $j, "\n";

####################### 2.py: for loop, global var #####################
#!/usr/bin/env python
j = 0.
for i in xrange(1e6):
        j += i*2.5
print i, j



####################### 3.pl: while loop, local var #####################
#!/usr/bin/env perl
sub func {
        $j = 0.;
        $i = 0;
        while ($i < 1e6) {
                $j += $i * 2.5;
                $i ++;
        }
        print $i, ' ', $j, "\n";
}
&func;

####################### 3.py: while loop, local var #####################
#!/usr/bin/env python
def func ():
        i, j = 0, 0.
        while i<1e6:
                j += i*2.5
                i += 1
        print i, j
func()



####################### 4.pl: for loop, local var #####################
#!/usr/bin/env perl
sub func {
        $j = 0.;
        for ($i=0; $i < 1e6; $i++) {
                $j += $i * 2.5;
        }
        print $i, ' ', $j, "\n";
}
&func;

####################### 4.py: for loop, local var #####################
#!/usr/bin/env python
def func ():
        j = 0.
        for i in xrange(1e6):
                j += i*2.5
        print i, j
func()



More information about the Python-list mailing list