zoukankan      html  css  js  c++  java
  • 检测你的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();
    ?>
  • 相关阅读:
    逛画展
    数的划分
    有点难度的树链刨分
    树链刨分
    记502 dp专练
    数论相关
    模拟退火
    仓鼠找sugar
    NOIP 2017 解题报告
    整体二分
  • 原文地址:https://www.cnblogs.com/lixiuran/p/3699813.html
Copyright © 2011-2022 走看看