zoukankan      html  css  js  c++  java
  • php Timer 页面运行时间监测类

    php Timer 页面运行时间监测类,可按不同key监测不同的运行时间


    Timer.class.php

    <?php
    /** Timer class, 计算页面运行时间,可按不同key计算不同的运行时间
    *   Date:   2014-02-28
    *   Author: fdipzone
    *   Ver:    1.0
    *
    *   Func:
    *   public  start        记录开始时间
    *   public  end          记录结束时间
    *   public  getTime      计算运行时间
    *   pulbic  printTime    输出运行时间
    *   private getKey       获取key
    *   private getMicrotime 获取microtime
    */
    
    class Timer{ // class start
    
        private $_start = array();
        private $_end = array();
        private $_default_key = 'Timer';
        private $_prefix = 'Timer_';
    
    
        /** 记录开始时间
        * @param String $key 标记
        */
        public function start($key=''){
            $flag = $this->getKey($key);
            $this->_start[$flag] = $this->getMicrotime();
        }
    
    
        /** 记录结束时间
        * @param String $key 标记
        */
        public function end($key=''){
            $flag = $this->getKey($key);
            $this->_end[$flag] = $this->getMicrotime();
        }
    
    
        /** 计算运行时间
        * @param  String $key 标记
        * @return float
        */
        public function getTime($key=''){
            $flag = $this->getKey($key);
            if(isset($this->_end[$flag]) && isset($this->_start[$flag])){
                return (float)($this->_end[$flag] - $this->_start[$flag]);
            }else{
                return 0;
            }
        }
    
    
        /** 输出页面运行时间
        * @param  String $key 标记
        * @return String
        */
        public function printTime($key=''){
            printf("%srun time %f ms
    ", $key==''? $key : $key.' ', $this->getTime($key)*1000);
        }
    
    
        /** 获取key
        * @param  String $key 标记
        * @return String 
        */
        private function getKey($key=''){
            if($key==''){
                return $this->_default_key;
            }else{
                return $this->_prefix.$key;
            }
        }
    
    
        /** 获取microtime
        */
        private function getMicrotime(){
            list($usec, $sec) = explode(' ', microtime());
            return (float)$usec + (float)$sec;
        }
    
    
    } // class end
    
    ?>
    demo:

    <?php
    
    require 'Timer.class.php';
    
    $timer = new Timer();
    $timer->start();
    
    $timer->start('program1');
    usleep(mt_rand(100000,500000));
    $timer->end('program1');
    $timer->printTime('program1');
    
    $timer->start('program2');
    usleep(mt_rand(100000,500000));
    $timer->end('program2');
    $timer->printTime('program2');
    
    $timer->end();
    $timer->printTime();
    
    ?>

    demo运行输出:

    program1 run time 163.285971 ms
    program2 run time 100.347042 ms
    run time 264.035940 ms


    源码下载地址:点击查看


  • 相关阅读:
    day35—JavaScript操作元素(创建、删除)
    day34—JavaScript实现DOM操作
    day33—前端开发的模块化和组件化
    day32—CSS多列布局学习
    day31—CSS Reset 与页面居中布局
    JVM(18)之 Class文件
    JVM(17)之 准备-解析-初始化
    JVM(16)之 双亲委派模型
    JVM(15)之 类加载器
    JVM(14)之 类加载机制
  • 原文地址:https://www.cnblogs.com/fdipzone/p/3715055.html
Copyright © 2011-2022 走看看