summaryrefslogtreecommitdiff
path: root/Zend/bench.php
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2004-09-29 17:08:46 +0000
committerAndi Gutmans <andi@php.net>2004-09-29 17:08:46 +0000
commit5efcdba2d05b57a0eab50197208e4ee083a9b0f4 (patch)
tree36d21bc48dd8567a27445e8fc6923b3c17d5e980 /Zend/bench.php
parent379bb867cbcccd85ee5530e505de67f5fe462b96 (diff)
downloadphp-git-5efcdba2d05b57a0eab50197208e4ee083a9b0f4.tar.gz
- Move bench.php to Zend/
Diffstat (limited to 'Zend/bench.php')
-rw-r--r--Zend/bench.php412
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");
+?>