提升PHP性能之改变Zend引擎分发方式
hash2(500) 0.088 heapsort(20000) 0.247 matrix(20) 0.247 nestedloop(12) 0.519 sieve(30) 0.331 strcat(200000) 0.037 ------------------------ Total 7.103
可见, GOTO方式最快, SWITCH方式最慢.和官方的描述稍有不符. GOTO方式比其默认的CALL方式, 性能提升还是比较明显的. 所以, 如果你希望让PHP发挥到机制, 改变Zend VM的分发方式, 也可以做为一个考虑因素. 附: 使用GOTO方式的configure选项:
--with-zend-vm=GOTO
也可以在Zend目录下使用:
php zend_vm_gen.php --with-vm-kind=[CALL|GOTO|SWITH]
测试脚本bench.php
/** * PHP Perf Bench Test Script */ 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 " 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"; } /****/ fun |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |