3v4l.org

run code in 200+ php & hhvm versions
Bugs & Features
<?php //date_default_timezone_set('UTC'); set_time_limit(120); ini_set('max_execution_time', 120); echo "PHP VERSION: ".PHP_VERSION."\n"; function simple() { $a = 0; for ($i = 0; $i < 1000000; $i++) $a++; $thisisanotherlongname = 0; for ($thisisalongname = 0; $thisisalongname < 1000000; $thisisalongname++) $thisisanotherlongname++; } /****/ function simplecall() { for ($i = 0; $i < 1000000; $i++) strlen("hallo"); } /****/ function hallo($a) { } function simpleucall() { for ($i = 0; $i < 1000000; $i++) hallo("hallo"); } /****/ function simpleudcall() { for ($i = 0; $i < 1000000; $i++) hallo2("hallo"); } function hallo2($a) { } /****/ function mandel() { $w1=50; $h1=150; $recen=-.45; $imcen=0.0; $r=0.7; $s=0; $rec=0; $imc=0; $re=0; $im=0; $re2=0; $im2=0; $x=0; $y=0; $w2=0; $h2=0; $color=0; $s=2*$r/$w1; $w2=40; $h2=12; for ($y=0 ; $y<=$w1; $y=$y+1) { $imc=$s*($y-$h2)+$imcen; for ($x=0 ; $x<=$h1; $x=$x+1) { $rec=$s*($x-$w2)+$recen; $re=$rec; $im=$imc; $color=1000; $re2=$re*$re; $im2=$im*$im; while( ((($re2+$im2)<1000000) && $color>0)) { $im=$re*$im*2+$imc; $re=$re2-$im2+$rec; $re2=$re*$re; $im2=$im*$im; $color=$color-1; } if ( $color==0 ) { print "_"; } else { print "#"; } } print "<br>"; flush(); } } /****/ function mandel2() { $b = " .:,;!/>)|&IH%*#"; //float r, i, z, Z, t, c, C; for ($y=30; printf("\n"), $C = $y*0.1 - 1.5, $y--;){ for ($x=0; $c = $x*0.04 - 2, $z=0, $Z=0, $x++ < 75;){ for ($r=$c, $i=$C, $k=0; $t = $z*$z - $Z*$Z + $r, $Z = 2*$z*$Z + $i, $z=$t, $k<5000; $k++) if ($z*$z + $Z*$Z > 500000) break; echo $b[$k%16]; } } } /****/ function Ack($m, $n){ if($m == 0) return $n+1; if($n == 0) return Ack($m-1, 1); return Ack($m - 1, Ack($m, ($n - 1))); } function ackermann($n) { $r = Ack(3,$n); print "Ack(3,$n): $r\n"; } /****/ function ary($n) { for ($i=0; $i<$n; $i++) { $X[$i] = $i; } for ($i=$n-1; $i>=0; $i--) { $Y[$i] = $X[$i]; } $last = $n-1; print "$Y[$last]\n"; } /****/ function ary2($n) { for ($i=0; $i<$n;) { $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; $X[$i] = $i; ++$i; } for ($i=$n-1; $i>=0;) { $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; $Y[$i] = $X[$i]; --$i; } $last = $n-1; print "$Y[$last]\n"; } /****/ function ary3($n) { for ($i=0; $i<$n; $i++) { $X[$i] = $i + 1; $Y[$i] = 0; } for ($k=0; $k<1000; $k++) { for ($i=$n-1; $i>=0; $i--) { $Y[$i] += $X[$i]; } } $last = $n-1; print "$Y[0] $Y[$last]\n"; } /****/ function fibo_r($n){ return(($n < 2) ? 1 : fibo_r($n - 2) + fibo_r($n - 1)); } function fibo($n) { $r = fibo_r($n); print "$r\n"; } /****/ function hash1($n) { for ($i = 1; $i <= $n; $i++) { $X[dechex($i)] = $i; } $c = 0; for ($i = $n; $i > 0; $i--) { if ($X[dechex($i)]) { $c++; } } print "$c\n"; } /****/ function hash2($n) { for ($i = 0; $i < $n; $i++) { $hash1["foo_$i"] = $i; $hash2["foo_$i"] = 0; } for ($i = $n; $i > 0; $i--) { foreach($hash1 as $key => $value) $hash2[$key] += $value; } $first = "foo_0"; $last = "foo_".($n-1); print "$hash1[$first] $hash1[$last] $hash2[$first] $hash2[$last]\n"; } /****/ function gen_random ($n) { global $LAST; return( ($n * ($LAST = ($LAST * IA + IC) % IM)) / IM ); } function heapsort_r($n, &$ra) { $l = ($n >> 1) + 1; $ir = $n; while (1) { if ($l > 1) { $rra = $ra[--$l]; } else { $rra = $ra[$ir]; $ra[$ir] = $ra[1]; if (--$ir == 1) { $ra[1] = $rra; return; } } $i = $l; $j = $l << 1; while ($j <= $ir) { if (($j < $ir) && ($ra[$j] < $ra[$j+1])) { $j++; } if ($rra < $ra[$j]) { $ra[$i] = $ra[$j]; $j += ($i = $j); } else { $j = $ir + 1; } } $ra[$i] = $rra; } } function heapsort($N) { global $LAST; define("IM", 139968); define("IA", 3877); define("IC", 29573); $LAST = 42; for ($i=1; $i<=$N; $i++) { $ary[$i] = gen_random(1); } heapsort_r($N, $ary); printf("%.10f\n", $ary[$N]); } /****/ function mkmatrix ($rows, $cols) { $count = 1; $mx = array(); for ($i=0; $i<$rows; $i++) { for ($j=0; $j<$cols; $j++) { $mx[$i][$j] = $count++; } } return($mx); } function mmult ($rows, $cols, $m1, $m2) { $m3 = array(); for ($i=0; $i<$rows; $i++) { for ($j=0; $j<$cols; $j++) { $x = 0; for ($k=0; $k<$cols; $k++) { $x += $m1[$i][$k] * $m2[$k][$j]; } $m3[$i][$j] = $x; } } return($m3); } function matrix($n) { $SIZE = 30; $m1 = mkmatrix($SIZE, $SIZE); $m2 = mkmatrix($SIZE, $SIZE); while ($n--) { $mm = mmult($SIZE, $SIZE, $m1, $m2); } print "{$mm[0][0]} {$mm[2][3]} {$mm[3][2]} {$mm[4][4]}\n"; } /****/ function nestedloop($n) { $x = 0; for ($a=0; $a<$n; $a++) for ($b=0; $b<$n; $b++) for ($c=0; $c<$n; $c++) for ($d=0; $d<$n; $d++) for ($e=0; $e<$n; $e++) for ($f=0; $f<$n; $f++) $x++; print "$x\n"; } /****/ function sieve($n) { $count = 0; while ($n-- > 0) { $count = 0; $flags = range (0,8192); for ($i=2; $i<8193; $i++) { if ($flags[$i] > 0) { for ($k=$i+$i; $k <= 8192; $k+=$i) { $flags[$k] = 0; } $count++; } } } print "Count: $count\n"; } /****/ function strcat($n) { $str = ""; while ($n-- > 0) { $str .= "hello\n"; } $len = strlen($str); print "$len\n"; } /*****/ function getmicrotime() { $t = gettimeofday(); return ($t['sec'] + $t['usec'] / 1000000); } function start_test() { ob_start(); return getmicrotime(); } function end_test($start, $name) { global $total; $end = getmicrotime(); ob_end_clean(); $total += $end-$start; $num = number_format($end-$start,3); $pad = str_repeat(" ", 24-strlen($name)-strlen($num)); echo $name.$pad.$num."\n"; // flush(); ob_start(); return getmicrotime(); } function total() { global $total; $pad = str_repeat("-", 24); echo $pad."\n"; $num = number_format($total,3); $pad = str_repeat(" ", 24-strlen("Total")-strlen($num)); echo "Total".$pad.$num."\n"; } $t0 = $t = start_test(); simple(); $t = end_test($t, "simple"); simplecall(); $t = end_test($t, "simplecall"); simpleucall(); $t = end_test($t, "simpleucall"); simpleudcall(); $t = end_test($t, "simpleudcall"); mandel(); $t = end_test($t, "mandel"); mandel2(); $t = end_test($t, "mandel2"); ackermann(7); $t = end_test($t, "ackermann(7)"); ary(50000); $t = end_test($t, "ary(50000)"); ary2(50000); $t = end_test($t, "ary2(50000)"); ary3(2000); $t = end_test($t, "ary3(2000)"); fibo(30); $t = end_test($t, "fibo(30)"); hash1(50000); $t = end_test($t, "hash1(50000)"); hash2(500); $t = end_test($t, "hash2(500)"); heapsort(20000); $t = end_test($t, "heapsort(20000)"); matrix(20); $t = end_test($t, "matrix(20)"); nestedloop(12); $t = end_test($t, "nestedloop(12)"); sieve(30); $t = end_test($t, "sieve(30)"); strcat(200000); $t = end_test($t, "strcat(200000)"); total($t0, "Total"); echo 'Memory (MB): '.( (function_exists('memory_get_usage')) ? number_format(memory_get_usage()/1024/1024, 2) : '-' );
Output for 7.2.0
PHP VERSION: 7.2.0 simple 0.026 simplecall 0.007 simpleucall 0.020 simpleudcall 0.024 mandel 0.094 mandel2 0.108 ackermann(7) 0.021 ary(50000) 0.003 ary2(50000) 0.002 ary3(2000) 0.057 fibo(30) 0.075 hash1(50000) 0.010 hash2(500) 0.009 heapsort(20000) 0.024 matrix(20) 0.024 nestedloop(12) 0.043 sieve(30) 0.017 strcat(200000) 0.005 ------------------------ Total 0.569 Memory (MB): 0.43
Output for 7.1.7
PHP VERSION: 7.1.7 simple 0.033 simplecall 0.009 simpleucall 0.023 simpleudcall 0.025 mandel 0.099 mandel2 0.104 ackermann(7) 0.023 ary(50000) 0.003 ary2(50000) 0.003 ary3(2000) 0.054 fibo(30) 0.087 hash1(50000) 0.012 hash2(500) 0.008 heapsort(20000) 0.022 matrix(20) 0.023 nestedloop(12) 0.044 sieve(30) 0.016 strcat(200000) 0.005 ------------------------ Total 0.594 Memory (MB): 0.40
Output for 7.1.6
PHP VERSION: 7.1.6 simple 0.050 simplecall 0.012 simpleucall 0.034 simpleudcall 0.034 mandel 0.095 mandel2 0.093 ackermann(7) 0.021 ary(50000) 0.003 ary2(50000) 0.002 ary3(2000) 0.045 fibo(30) 0.085 hash1(50000) 0.012 hash2(500) 0.008 heapsort(20000) 0.022 matrix(20) 0.023 nestedloop(12) 0.044 sieve(30) 0.016 strcat(200000) 0.005 ------------------------ Total 0.603 Memory (MB): 0.40
Output for 7.1.5
PHP VERSION: 7.1.5 simple 0.058 simplecall 0.013 simpleucall 0.035 simpleudcall 0.034 mandel 0.090 mandel2 0.088 ackermann(7) 0.020 ary(50000) 0.009 ary2(50000) 0.005 ary3(2000) 0.045 fibo(30) 0.084 hash1(50000) 0.011 hash2(500) 0.008 heapsort(20000) 0.022 matrix(20) 0.023 nestedloop(12) 0.042 sieve(30) 0.015 strcat(200000) 0.004 ------------------------ Total 0.608 Memory (MB): 0.40
Output for 7.0.20
PHP VERSION: 7.0.20 simple 0.037 simplecall 0.009 simpleucall 0.022 simpleudcall 0.024 mandel 0.090 mandel2 0.121 ackermann(7) 0.022 ary(50000) 0.004 ary2(50000) 0.003 ary3(2000) 0.071 fibo(30) 0.097 hash1(50000) 0.015 hash2(500) 0.013 heapsort(20000) 0.038 matrix(20) 0.052 nestedloop(12) 0.056 sieve(30) 0.026 strcat(200000) 0.004 ------------------------ Total 0.705 Memory (MB): 0.40