php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #64001 Slow method invocation for PHP5.5.0 with Development Server
Submitted: 2013-01-16 07:38 UTC Modified: 2013-01-18 15:10 UTC
From: lisachenko dot it at gmail dot com Assigned:
Status: Not a bug Package: Performance problem
PHP Version: 5.5.0alpha3 OS: Windows 7 x64
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: lisachenko dot it at gmail dot com
New email:
PHP Version: OS:

 

 [2013-01-16 07:38 UTC] lisachenko dot it at gmail dot com
Description:
------------
I notice, that speed of method invocation for PHP5.5.0alpha3 is significantly slower than for PHP5.4 when running the script with internal Development Server. However, for CLI-mode PHP5.5.0 is faster than PHP5.4.10, as expected.

To reproduce the issue, please start the development server and execute test script in the browser.


Test script:
---------------
class TestPerformance {

    public function speed()
    {
        $time  = microtime(true);
        $this->nop();
        echo 'Took ', sprintf("%0.3fms to call method", (microtime(true) - $time) * 1e3);
    }

    protected function nop() {}
}

$instance = new TestPerformance;
$instance->speed();

Expected result:
----------------
Expecting that method invocation will take microseconds to finish:
php-5.4.10-Win32-VC9-x86:
  Took 0.005ms to call method
php-5.5.0alpha3-Win32-VC9-x86:
  Took 0.00Xms to call method

Actual result:
--------------
Method invocation for 5.5.0alpha3 took millisecond to finish:
php-5.4.10-Win32-VC9-x86:
  Took 0.005ms to call method
php-5.5.0alpha3-Win32-VC9-x86:
  Took 1.008ms to call method
php-5.5.0alpha3-nts-Win32-VC9-x86:
  Took 1.000ms to call method

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2013-01-16 07:41 UTC] lisachenko dot it at gmail dot com
-PHP Version: 5.5.0alpha2 +PHP Version: 5.5.0alpha3
 [2013-01-16 07:41 UTC] lisachenko dot it at gmail dot com
Update PHP version for issue manually (There isn't alpha3 in select).
 [2013-01-17 05:45 UTC] laruence@php.net
-Status: Open +Status: Feedback
 [2013-01-17 05:45 UTC] laruence@php.net
I can not reproduce this, do they (5.4 and 5.5) share the same php.ini configure?

I think maybe due to output buffer.
 [2013-01-17 10:35 UTC] lisachenko dot it at gmail dot com
Yeah, detected the issue. 

Configurations were the same for all installations (default configuration), so this issue doesn't relate to the output buffering. Just to be sure, I have compared output for "php -i" for all installations, there were only differences in REQUEST_TIME, build version and ... presence of loaded php.ini file for PHP5.4.10. 

If php.ini file is present (settings are still default) and loaded, then speed of method invocation is higher... Amazing ) Without php.ini (but with the same default settings) speed is lower for internal development server.

This can be reproduced with PHP5.4.10 too. So this performance bug is more general.
 [2013-01-18 09:18 UTC] laruence@php.net
How about change to this:

class TestPerformance {

    public function speed()
    {
        $time  = microtime(true);
        $this->nop();
        $end   = microtime(true);
        echo 'Took ', sprintf("%0.3fms to call method", ($end - $time) * 1e3);
    }

    protected function nop() {}
}

$instance = new TestPerformance;
$instance->speed();
 [2013-01-18 12:24 UTC] lisachenko dot it at gmail dot com
Rewriting the source code in that way fixes the issue and execution time is about 4us. But how presence of php.ini with default settings can be related with the speed of method invocation for my case?

Can you reproduce it with my code and my php.ini http://pastebin.com/zDNvzuvg ? Here is the difference for php -i for loaded/unloaded php.ini http://pastebin.com/BrxBaTJ0 Speed of execution for my previous code block is not equal (5us and 1ms)
 [2013-01-18 15:10 UTC] laruence@php.net
as I said, due to output buffer
 [2013-01-18 15:10 UTC] laruence@php.net
-Status: Feedback +Status: Not a bug
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 14:01:32 2024 UTC