parent
0dbb12812d
commit
0447e73214
1 changed files with 424 additions and 0 deletions
@ -0,0 +1,424 @@ |
|||||||
|
<?php |
||||||
|
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 gethrtime() |
||||||
|
{ |
||||||
|
$hrtime = hrtime(); |
||||||
|
return (($hrtime[0]*1000000000 + $hrtime[1]) / 1000000000); |
||||||
|
} |
||||||
|
|
||||||
|
function start_test() |
||||||
|
{ |
||||||
|
ob_start(); |
||||||
|
return gethrtime(); |
||||||
|
} |
||||||
|
|
||||||
|
function end_test($start, $name) |
||||||
|
{ |
||||||
|
global $total; |
||||||
|
$end = gethrtime(); |
||||||
|
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"; |
||||||
|
ob_start(); |
||||||
|
return gethrtime(); |
||||||
|
} |
||||||
|
|
||||||
|
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"; |
||||||
|
} |
||||||
|
|
||||||
|
function main() |
||||||
|
{ |
||||||
|
if (function_exists("date_default_timezone_set")) { |
||||||
|
date_default_timezone_set("UTC"); |
||||||
|
} |
||||||
|
|
||||||
|
$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(); |
||||||
|
} |
||||||
Loading…
Reference in new issue