diff options
author | Andi Gutmans <andi@php.net> | 2004-09-29 17:08:46 +0000 |
---|---|---|
committer | Andi Gutmans <andi@php.net> | 2004-09-29 17:08:46 +0000 |
commit | 5efcdba2d05b57a0eab50197208e4ee083a9b0f4 (patch) | |
tree | 36d21bc48dd8567a27445e8fc6923b3c17d5e980 /Zend/bench.php | |
parent | 379bb867cbcccd85ee5530e505de67f5fe462b96 (diff) | |
download | php-git-5efcdba2d05b57a0eab50197208e4ee083a9b0f4.tar.gz |
- Move bench.php to Zend/
Diffstat (limited to 'Zend/bench.php')
-rw-r--r-- | Zend/bench.php | 412 |
1 files changed, 412 insertions, 0 deletions
diff --git a/Zend/bench.php b/Zend/bench.php new file mode 100644 index 0000000000..c45fe40bcc --- /dev/null +++ b/Zend/bench.php @@ -0,0 +1,412 @@ +<?php + +function simple() { + for ($i = 0; $i < 1000000; $i++) + $a++; + + 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>".$vbCr; + 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; $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; + $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; + } + 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($n - 2) + fibo_r($n - 1)); +} + +function fibo($n) { + $r = fibo_r($n); + print "$r\n"; +} + +/****/ + +function hash($n) { + for ($i = 1; $i <= $n; $i++) { + $X[dechex($i)] = $i; + } + for ($i = $n; $i > 0; $i--) { + if ($X[$i]) { $c++; } + } + print "$c\n"; +} + +/****/ + +function hash2($n) { + for ($i = 0; $i < 10000; $i++) { + $hash1["foo_$i"] = $i; + } + for ($i = $n; $i > 0; $i--) { + foreach($hash1 as $key => $value) $hash2[$key] += $value; + } + print "$hash1[foo_1] $hash1[foo_9999] $hash2[foo_1] $hash2[foo_9999]\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() +{ + list($usec, $sec) = explode(" ",microtime()); + return ((float)$usec + (float)$sec); +} + +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"; + 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)"); +hash(50000); +$t = end_test($t, "hash(50000)"); +hash2(50); +$t = end_test($t, "hash2(50)"); +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"); +?> |