Bug #73678 [Opn]: Strange performance degradation
| From: | ab@php.net | Date: | Thu, 08 Dec 2016 11:43:37 +0000 |
| Subject: | Bug #73678 [Opn]: Strange performance degradation | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-205836@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=73678&edit=1
ID: 73678
Updated by: ab@php.net
Reported by: riggsfolly at gmail dot com
Summary: Strange performance degradation
Status: Open
Type: Bug
Package: Performance problem
Operating System: Windows
PHP Version: 7.1.0
Block user comment: N
Private report: N
New Comment:
Same here, degradation of 7.0, neither with 7.1 or master.
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2016-12-07 20:06:15] nikic@php.net
Cannot reproduce.
Ubuntu:
PHP 7.0:
nikic@saturn:~/php-7.0-fast$ sapi/cli/php -n t007.php
Using (object) [] method 10000000 times 0.77149391174316
Using new stdClass() method 10000000 times 1.3405849933624
PHP 7.1:
Using (object) [] method 10000000 times 0.71639490127563
Using new stdClass() method 10000000 times 1.1726460456848
Windows (x64 nts):
PHP 7.0:
Using (object) [] method 10000000 times 1.0753118991852
Using new stdClass() method 10000000 times 1.6590139865875
PHP 7.1:
Using (object) [] method 10000000 times 0.99693298339844
Using new stdClass() method 10000000 times 1.4866938591003
Please make sure that you do not have XDebug enabled.
------------------------------------------------------------------------
[2016-12-07 19:39:42] riggsfolly at gmail dot com
Description:
------------
I was using this script to benchmark a question on StackOverflow and I noticed that in PHP 7.1.0 the
creation of a stdClass() object increased in time taken by an appreciable amount between PHP7.0.13
and PHP7.1.0
This seemed rather odd based on all the speed improvment work done in 7.0 and 7.1 so I thought I
would report it, in case it pointed someone at something that may have changed in 7.1 to the damage
a speed improvement.
Results for different versions of PHP
PHP7.1.0
Using (object) [] method 10,000,000 times 22.970033168793
Using new stdClass() method 10,000,000 times 38.114390850067
Difference (-ve) means (object) [] is quicker -15.144357681274
PHP7.0.13
Using (object) [] method 10,000,000 times 22.230031967163
Using new stdClass() method 10,000,000 times 29.300040960312
Difference (-ve) means (object) [] is quicker -7.0700089931488
PHP5.6.25
Using (object) [] method 10,000,000 times 47.920066833496
Using new stdClass() method 10,000,000 times 54.20007610321
Difference (-ve) means (object) [] is quicker -6.2800092697144
PHP5.5.36
Using (object) [] method 10,000,000 times 46.450064897537
Using new stdClass() method 10,000,000 times 53.110074043274
Difference (-ve) means (object) [] is quicker -6.6600091457367
Test script:
---------------
function one() {
$obj = (object) ['prop1' => 1, 'prop2' => 2];
return $obj;
}
function two() {
$obj = new stdClass();
$obj->prop1 = 1;
$obj->prop2 = 2;
return $obj;
}
$looper = 10000000;
$a = microtime(1);
for ( $i=0; $i < $looper; $i++) { $x = one(); }
$b = microtime(1);
$c = $b-$a;
echo "Using (object) [] method $looper times " . $c . PHP_EOL;
$a = microtime(1);
for ( $i=0; $i < $looper; $i++) { $x = two(); }
$b = microtime(1);
$d = $b-$a;
echo "Using new stdClass() method $looper times " . $d . PHP_EOL;
echo 'Difference (-ve) means (object) [] is quicker ' . ($c - $d) . PHP_EOL;
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=73678&edit=1