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