ID: 45942 User updated by: jhuckaby at gmail dot com Reported By: jhuckaby at gmail dot com -Status: Feedback +Status: Open Bug Type: Performance problem Operating System: Fedora Core 6 PHP Version: 5.2.6 New Comment:
Okay, I followed your instructions. I added AC_SYS_LARGEFILE to configure.in, then ran ./buildconf --force. Then I followed with ./configure..., make, and make install. I found the following output from ./configure of interest: checking for special C compiler options needed for large files... no checking for _FILE_OFFSET_BITS value needed for large files... unknown checking for _LARGE_FILES value needed for large files... unknown Anyway, it compiled clean and installed. And it seems to work correctly, writing >2GB large files without error AND the interpreter speed is fast! Thanks! [EMAIL PROTECTED] php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 310 [EMAIL PROTECTED] php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 311 [EMAIL PROTECTED] php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 312 [EMAIL PROTECTED] php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 306 [EMAIL PROTECTED] php-5.2.6]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 311 I guess we can close this bug! Previous Comments: ------------------------------------------------------------------------ [2008-08-29 19:03:20] crrodriguez at suse dot de 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. ------------------------------------------------------------------------ [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 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 157 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 157 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 156 [EMAIL PROTECTED] 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 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 285 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 293 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 289 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 298 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 287 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 293 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 286 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 289 [EMAIL PROTECTED] buildscripts]# /ipix/php/bin/php ~/benchmark.php CPU Benchmark: 298 [EMAIL PROTECTED] 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] [EMAIL PROTECTED] 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: [EMAIL PROTECTED] 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: [EMAIL PROTECTED] 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: ---------------- [EMAIL PROTECTED] 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: -------------- [EMAIL PROTECTED] 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