PHP Benchmarks

Performance comparison of PHP code alternatives.

Test: tail recurison

Is using tail-end recursion (where the recursion happens at the end of the function) any better?

View test history (3) Run this test again Return to test menu

Result: Discarded

The test labeled "normal recursion" was the faster by 0.0371 seconds, (3.698% faster)

normal recursion 100%
tail recursion 96.302%

The normal recursion test took 0.9675 seconds.
The tail recursion test took 1.0047 seconds.

Nitty-Gritty

Each test case ran 20 random code order iterations consisting of 252,099 loops for a total of 5,041,980 runs.

  • Line execution difference (0.000007) milliseconds.
  • Avg difference (1.857) milliseconds per 252,099 loops.
  • Total difference 37.15 milliseconds for 5,041,980 loops

The iteration variablity for Code 1 was (1.5040) milliseconds and Code 2 was (2.3497) milliseconds. The lower and the closer together there values are the more accurate the results are.

Code

The first test, "normal recursion", was:

/*
function recurse_tail($i, $inside)
{
	$data = '<div>' . $inside . '</div>';

	if ($i <= 0)
		return $data;
	else
		return recurse_tail($i - 1, $data);
}
*/

$result = recurse_tail(200, '');

The second test, "tail recursion", was:

/*
function recurse_normal($i, $inside)
{
	$data = '<div>';
	if ($i <= 0)
		$data .= $inside;
	else
		$data .= recurse_normal($i - 1, $data);
	$data .= '</div>';

	return $data;
}
*/

$result = recurse_normal(200, '');

Running: Linux (x86_64:1 GB) PHP (7.2.22-1+ubuntu16.04.1+deb.sury.org+1)