- microtime: documentation ( source)
- set_time_limit: documentation ( source)
- print_r: documentation ( source)
- array_keys: documentation ( source)
<?php
// Start
set_time_limit(0);
echo "<pre>";
// Normal Recusion
function m1($num) {
return $num === 0 ? 1 : $num * m1($num - 1);
}
// Tail Recusion
function m2($num) {
return m2Helper($num, 1);
}
// Tail Recusion Helper
function m2Helper($num, $acc) {
return $num === 0 ? $acc : m2($num - 1, $acc * $num);
}
$result = array('m1' => 0,'m2' => 0);
$no = 10;
for($i = 0; $i < 1; ++ $i) {
foreach ( array_keys($result) as $key ) {
$alpha = microtime(true);
$key($no);
$result[$key] += microtime(true) - $alpha;
}
}
echo '<pre>';
echo "Single Run\n";
print_r($result);
echo '</pre>';
?>