|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2008-08-28 21:07 UTC] jani@php.net
[2008-08-28 21:20 UTC] jhuckaby at gmail dot com
[2008-08-29 19:03 UTC] crrodriguez at suse dot de
[2008-08-29 20:28 UTC] jhuckaby at gmail dot com
[2008-08-29 21:27 UTC] jhuckaby at gmail dot com
[2008-08-29 21:30 UTC] jhuckaby at gmail dot com
[2008-09-03 21:05 UTC] jhuckaby at gmail dot com
[2011-12-09 21:48 UTC] jhuckaby at gmail dot com
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 08 03:00:01 2025 UTC |
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.)