检测你的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();

?>

 

你可能感兴趣的:(PHP)