用VLD检测你的php代码执行效率~~
在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了。我们其实可以通过程序很科学的得出精确的答案。知道我们的程序到底怎样写效率会更好。
VLD全名是Vulcan Logic Disassembler,可以用来检测PHP脚本的执行情况。
1)
安装VLD:
wget
http://pecl.php.net/get/vld
tar zxvf vld-0.9.1.tgz
cd
vld-0.9.1
phpize
./configure
make
install
编辑php.ini文件激活vld扩展:
extension=vld.so
别忘了重启Apache。
下面我们看看如何检测PHP脚本的执行情况,看看PHP是如何处理单双引号字符串的:
s.php(单引号):<?php
echo ‘hello, world.‘; ?>
d.php(双引号):<?php echo "hello, world.";
?>
开始检测:
php -dvld.active=1 s.php或者d.php
结果不管是s.php还是d.php,number
of ops都是3,内容也都一样:
number of ops: 3
compiled vars:
none
line #
op
fetch ext return
operands
-------------------------------------------------------------------------------
1 0
ECHO
‘hello%2C+world.‘
2 1
RETURN
1
2*
ZEND_HANDLE_EXCEPTION
通常人们总是说,单引号比双引号快。但正如上面的实验结果显示,如果仅仅是输出一个常量字符串,那么单引号和双引号的效率其实是一样的。大家可以试试连接两个变量时他们的效率是不是还是一样呢
2)
<?php /* *文件:PHP_OperationTime.php *功能:检测PHP执行效率 *作者:感染源 *时间:2007-04-29 */ class timer { var $StartTime = 0; var $StopTime = 0; var $TimeSpent = 0; function start() { $this->StartTime = microtime(); } function stop() { $this->StopTime = microtime(); } function spent() { if($this->TimeSpent) return $this->TimeSpent; else { $StartMicro = substr($this->StartTime,0,10); $StartSecond = substr($this->StartTime,11,10); $StopMicro = substr($this->StopTime,0,10); $StopSecond = substr($this->StopTime,11,10); $start = doubleval($StartMicro)+$StartSecond; $stop = doubleval($StopMicro)+$StartSecond; $this->TimeSpent = $stop-$start; return substr($this->TimeSpent,0,8).‘秒‘; } } }//Class Timer $ct = new timer; $ct->start(); //include_once(‘keygen.php‘); include_once(‘../GetRate/inputnum.php‘); $ct->stop(); echo ‘<br>‘; echo $ct->spent(); ?>