Re: Speed comparison of PHP vs. PERL (not conclusive)

From: Date: Fri, 31 May 2002 21:38:17 +0000
Subject: Re: Speed comparison of PHP vs. PERL (not conclusive)
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-100179@lists.php.net to get a copy of this message
Not very surprising. Perl's looping code has always ben faster than PHP's. Highly iterative loops is really not what PHP is geared for. You are not going to write a Mandelbrot algorithm in PHP. You write it in C and drop in a super-quick extension into PHP and call mandelbrot(). -Rasmus On Fri, 31 May 2002, Daniel Grace wrote: > This all started in a little debate between me and a friend of mine who I > think is as much a PERL zealot as I am a PHP zealot (I was briefly pondering > the idea of a Win32 API extension for PHP), and the results were rather > surprising -- to me, at least.. > > It all started when I asked him what PERL had that PHP didn't in terms of > language (not taking community, modules, etc. into an account). We both > believed that the two would be very similiar in speed -- he thought PERL > would be a little faster but not enough to be noticeable. For the first > test, I went with a program that computed prime numbers between 2 and 10000, > using no form of caching or anything like that. I gave him the PHP source > with the task of writing something in PERL as close to the original PHP > source as possible. The results: > > (note: I didn't know if PERL had PHP's continue(2), hence why I used the > slightly less efficient method here:) > > prime.php: > #!/usr/bin/php -q > <?php > > echo "2\n"; > > for($check = 3 ; $check < 10000 ; $check += 2) { > $prime = 1; > $half = (int) $check / 2; > for($against = 2 ; $against <= $half ; ++$against) { > if(!($check % $against)) { > $prime = 0; > break; > } > } > if($prime) echo "$check\n"; > } > > > prime.pl: > #!/usr/bin/perl > # print "2\n"; > my $num; > for ($num = 3; $num < 10000; $num+=2) > { > my $prime = 1; > for $check ( 2 .. int($num/2) ) > { > if ($num % $check == 0) > { > $prime = 0; > last; > } > } > # print "$num\n" if $prime; > } > > > The test machine is an AMD Duron 700 MHz using an a-bit KT7A motherboard > with 256 MB of PC100 SDRAM. uname -a reports "Linux ulysses.venura.net > 2.4.17-ulysses1 #1 Sat Dec 29 14:44:46 PST 2001 i686 unknown", PHP 4.2.1 was > configured with --enable-inline-optimization --prefix=[somepath], PERL 5.6.1 > was configured with -O3 (among other options) (PHP compiles with -g -O2 with > no 'easy' (at-configure-time) way to change that, to my knowledge). > > Both programs were ran once normally to verify they actually generated prime > numbers, and then the bash "time" command was used to time them, piping > their output to /dev/null to prevent that from being a factor. I re-ran the > tests a few times with results consistently similiar to those listed here: > > The results: > > [dewin@ulysses profiling]$ time ./prime.php > /dev/null > > real 0m14.465s > user 0m8.610s > sys 0m0.070s > > [dewin@ulysses profiling]$ time ./prime.pl > /dev/null > > real 0m5.302s > user 0m3.180s > sys 0m0.000s > > > > A second system, with PHP compiled the same way and a PERL 5.6.1 binary > distributed by Red Hat, 1.2 ghz with 442 MB of RAM: > > [root@mrr-016 law]# time ./prime.pl > /dev/null > real 0m2.078s > user 0m2.040s > sys 0m0.010s > > [root@mrr-016 law]# time ./prime.php > /dev/null > real 0m5.512s > user 0m5.430s > sys 0m0.010s > > > Comments? I was expecting the numbers to be very similiar -- rather shocked > that the PERL ended up being about 2.5x as fast as PHP was. > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.general (#100179) next »