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

Reply via email to