#27126 [Bgs]: Filling an array with php on Solaris is really slow.
| From: | mike at schreiber dot com | Date: | Wed, 04 Feb 2004 07:36:33 +0000 |
| Subject: | #27126 [Bgs]: Filling an array with php on Solaris is really slow. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-54372@lists.php.net to get a copy of this message | ||
ID: 27126
User updated by: mike at schreiber dot com
Reported By: mike at schreiber dot com
Status: Bogus
Bug Type: Performance problem
Operating System: Solaris 6-10beta
PHP Version: Irrelevant
New Comment:
Maybe it's not a bug, but it is a serious performance problem. I hope
the php group will catch an eye on it in their further development.
Furthermore i hope the php group is interested to run, test and support
their software on different platforms.
Previous Comments:
------------------------------------------------------------------------
[2004-02-03 10:27:08] iliaa@php.net
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions.
Thank you for your interest in PHP.
Given that the code runs at different speed across various
platforms, I'd say this a platform issue more then anything
else.
------------------------------------------------------------------------
[2004-02-03 02:45:38] mike at schreiber dot com
Description:
------------
While filling an array with about 400.000 Elements on a solaris box
took several seconds to be done. On other OS or for example Java und
Sun took only a few mill-seconds.
The debugger reports, that php ist trying to fetch memory for every
element in the array. This is the reason why it get so slow.
I have tried different Solaris Versions and different php versions. It
is the compination of solaris and php.
Linux und Solaris (same hardware) is much more faster.
Reproduce code:
---------------
<?php
function GetMicrotime(){
list($microseconds, $seconds) = explode("
",microtime());
return ((float)$microseconds + (float)$seconds);
}
$start = GetMicrotime();
$ende = GetMicrotime();
for($i=0;$i<50000;$i++)
{
$great_dump[] = array(1234,1234,1234);
}
$ende = GetMicrotime();
$time = $ende - $start;
printf("%.10f",$time);
echo "\n";
echo sizeof($great_dump);
?>
Expected result:
----------------
less then one second
Actual result:
--------------
took me about 6,3 seconds
Debugger:
0.1541 brk(0x003EC3A8) = 0
0.1542 brk(0x003EC3A8) = 0
0.1543 brk(0x003EE3A8) = 0
0.1544 brk(0x003EE3A8) = 0
0.1545 brk(0x003F03A8) = 0
0.1546 brk(0x003F03A8) = 0
0.1547 brk(0x003F23A8) = 0
0.1548 brk(0x003F23A8) = 0
0.1549 brk(0x003F43A8) = 0
0.1550 brk(0x003F43A8) = 0
0.1551 brk(0x003F63A8) = 0
continues about 3500 times
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27126&edit=1