Test: tail recurison
Is using tail-end recursion (where the recursion happens at the end of the function) any better?
Run this test again Return to test menuResult: Discarded
The test labeled "normal recursion" was the faster by 0.0113 seconds, (1.692% faster)
The normal recursion test took 0.6561 seconds.
The tail recursion test took 0.6674 seconds.
Nitty-Gritty
Each test case ran 20 random code order iterations consisting of 138,918 loops for a total of 2,778,360 runs.
- Line execution difference (0.000004) milliseconds.
- Avg difference (0.565) milliseconds per 138,918 loops.
- Total difference 11.29 milliseconds for 2,778,360 loops
The iteration variablity for Code 1 was (5.1125) milliseconds and Code 2 was (6.2244) 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, '');