#45942 [Opn->Fbk]: D_FILE_OFFSET_BITS=64 causes PHP to run at half speed

From: Date: Thu, 28 Aug 2008 21:07:20 +0000
Subject: #45942 [Opn->Fbk]: D_FILE_OFFSET_BITS=64 causes PHP to run at half speed
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-128504@lists.php.net to get a copy of this message
 ID:               45942
 Updated by:       jani@php.net
 Reported By:      jhuckaby at gmail dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         Performance problem
 Operating System: Fedora Core 6
 PHP Version:      5.2.6
 New Comment:

Try without any other stuff included, using --disable-all --disable-cgi
as only configure options. And run that script at least 10 times in a
row..


Previous Comments:
------------------------------------------------------------------------

[2008-08-28 17:36:37] jhuckaby at gmail dot com

Description:
------------
Compiling PHP with -D_FILE_OFFSET_BITS=64 causes the PHP interpreter 
to run at approximately half speed.  This includes basic math 
operations (no file reading/writing necessary to reproduce).

Output from script with PHP 5.2.6 compiled with the default 32 bit 
file offsets:

[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 319

Output from script with PHP 5.2.6 compiled with -
D_FILE_OFFSET_BITS=64:

[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 153

Please note this number represents the number of iterations through 
the loop in 1 second of runtime, so larger numbers are faster.

I have reproduced the same behavior with the bleeding edge CVS daily 
snapshot (php5.2-200808281630) and latest 5.2.6 stable, as well as 
5.2.4 stable.

My ./configure line:

CFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --with-pgsql=/ipix/pgsql -
-enable-ftp --with-zlib --enable-shmop --enable-sysvsem --enable-
sysvshm --enable-sysvmsg --enable-pcntl --enable-mbstring --with-xsl -
-with-curl --with-curlwrappers --without-mysql --with-ldap --with-
ldap-sasl --with-apache=../apache_1.3.39 --prefix=/ipix/php --with-
config-file-path=/ipix/php/lib

Simply removing the CFLAGS="-D_FILE_OFFSET_BITS=64" doubles the speed 
of the test script.





Reproduce code:
---------------
<?php

$start_time = microtime(true);
$done = 0;
$count = 0;

while (!$done) {
	for ($idx = 0; $idx < 10000; $idx++) {
		$x = 45 * 67 / 2 + $idx - 239892382.23232323;
		$y = 3483434.33483 / 28328372 * 384 + $idx - $x;
	}
	$count++;
	$now = microtime(true);
	if ($now - $start_time >= 1.0) { $done = 1; }
}

print "CPU Benchmark: $count\n";

?>



Expected result:
----------------
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 319

The output of the script should be nearly identical whether the 
D_FILE_OFFSET_BITS is set to 64 or not.

The benchmark number is the number of iterations through the loop that

was achieved in 1 second of runtime, so larger numbers are faster.





Actual result:
--------------
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 153

(This is about half the speed it should be -- larger numbers are
better, 
as this is a count of the iterations for one second of runtime.)






------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=45942&edit=1



Thread (9 messages)

« previous php.bugs (#128504) next »