Bug #14237 Updated: reference calls in some cases very slow

From: Date: Thu, 31 Jan 2002 10:12:55 +0000
Subject: Bug #14237 Updated: reference calls in some cases very slow
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-78675@lists.php.net to get a copy of this message
ID: 14237
Comment by: bs_php@infeer.com
Old Reported By: alberty@neptunelabs.com
Reported By: bs_php@infeer.com
Status: Open
Bug Type: Performance problem
Operating System: i686-pc-linux-gnu
PHP Version: 4.1.0
New Comment:

I did some benchmark tests on loops and so that also delever some
strange results. 

See it run at: http://phpxpath.sourceforge.net/benchmark/phpBench.php

Code at: http://phpxpath.sourceforge.net/benchmark/phpBench.php.txt


Previous Comments:
------------------------------------------------------------------------

[2001-12-13 04:47:07] alberty@neptunelabs.com

I think, this is an very annoying behavior of the zend engine and also
there are no warning or clue in the documentation.
Someone must change it.

------------------------------------------------------------------------

[2001-12-12 20:06:28] mfischer@php.net

That's a known issue with the current Zend Engine.

We could move it to a ZE feature request, but will it change anything
soon? I doubt ...

------------------------------------------------------------------------

[2001-12-12 19:59:37] yohgaki@php.net

PHP Version updated to 4.1.0

------------------------------------------------------------------------

[2001-12-12 19:58:57] yohgaki@php.net

Output from Linux Celeron 433/384MB/PHP 4.1.0/Apache 1.3.22.

Loopcount: 100
String size: 1048576
Time for function request "with_reference"   : 1.6308959722519 secs
Time for function request "without_reference": 0.0011709928512573
secsexecution time of without_reference is 1393 times fast as
with_reference! 

There must be something wrong....


------------------------------------------------------------------------

[2001-11-26 11:26:29] alberty@neptunelabs.com

Hi, i have found a very critical behavior with references under php.
The usage of references push in some cases the execution time extremly
higher.
I have written a small php script to explain the problem.
The main problem is, the longer the string the higher the execution
time, if you use a reference to the string.


<?php

// a function with using a reference to a parameter
function with_reference (&$stream, $loopcounter){
	for ($x=0;$x < $loopcounter; $x++){
		$xyz=substr($stream,0,5); // i take only the first 5 characters
	}
}


// the same function, but without a reference
function without_reference ($stream, $loopcounter){
	for ($x=0;$x < $loopcounter; $x++){
		$xyz=substr($stream,0,5);
	}
}


set_time_limit(60);

$loopcount=100; // only 100 function calls!
$streamsize=1048576; // 1MB, the longer the slower!!! Try 2MB.

// First, made a big string
for($x=0,$stream='';$x<$streamsize;$x++,$stream.='x'){}

// Start function with a reference and measure start time
$tmp = explode(' ', microtime()); $measure['Start
Reference']=(double)$tmp[0] + (double)$tmp[1];
with_reference ($stream, $loopcount);

// Start function without a reference
$tmp = explode(' ', microtime()); $measure['Start
Normal']=(double)$tmp[0] + (double)$tmp[1];
without_reference ($stream, $loopcount);

// measure end time
$tmp = explode(' ', microtime()); $measure['End']=(double)$tmp[0] +
(double)$tmp[1];

// subtract times
$with_ref_sec=$measure['Start Normal']-$measure['Start Reference'];
$without_ref_sec=$measure['End']-$measure['Start Normal'];

// output the times
echo "<tt>";
echo "Loopcount: $loopcount<br>";
echo "String size: $streamsize<br>";

echo "Time for function request \"with_reference\"&nbsp;&nbsp;&nbsp;:
";
echo $with_ref_sec;
echo " secs<br>";

echo "Time for function request \"without_reference\": ";
echo $without_ref_sec;
echo " secs<hr>";

echo "execution time of without_reference is
<b>".round($with_ref_sec/$without_ref_sec)."</b> times fast as
with_reference!</tt>";
?>

------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=14237&edit=1



Thread (7 messages)

« previous php.dev (#78675) next »