#45942 [Com]: D_FILE_OFFSET_BITS=64 causes PHP to run at half speed

From: Date: Fri, 29 Aug 2008 19:03:21 +0000
Subject: #45942 [Com]: 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-128542@lists.php.net to get a copy of this message
 ID:               45942
 Comment by:       crrodriguez at suse dot de
 Reported By:      jhuckaby at gmail dot com
 Status:           Feedback
 Bug Type:         Performance problem
 Operating System: Fedora Core 6
 PHP Version:      5.2.6
 New Comment:

You dont pass D_FILE_OFFSET_BITS=64 directly, but add

AC_SYS_LARGEFILE

to configure.in then run ./buildconf --force and rebuild PHP.

BTW.. it is known that large file support may not work currenlty with
PHP.


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

[2008-08-28 21:20:42] jhuckaby at gmail dot com

Good idea.

CFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --disable-all --disable-
cgi --with-apache=../apache_1.3.39 --prefix=/ipix/php --with-config-
file-path=/ipix/php/lib

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

./configure --disable-all --disable-cgi --with-apache=../apache_1.3.39

--prefix=/ipix/php --with-config-file-path=/ipix/php/lib

[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 285
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 293
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 289
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 298
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 287
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 293
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 286
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 289
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 298
[root@dev-ops buildscripts]# /ipix/php/bin/php ~/benchmark.php 
CPU Benchmark: 285

Still almost twice as fast when I remove the D_FILE_OFFSET_BITS flag.

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

[2008-08-28 21:07:19] jani@php.net

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..

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

[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 (#128542) next »