zoukankan      html  css  js  c++  java
  • ThinkPHP3.2 G函数代码及 使用方法

    ThinkPHP3.2 G函数代码及 使用方法

    代码:

    // 内存是否可调用
    define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));
    
    /**
     * 记录和统计时间(微秒)和内存使用情况
     * 使用方法:
     * <code>
     * G('begin'); // 记录开始标记位
     * // ... 区间运行代码
     * G('end'); // 记录结束标签位
     * echo G('begin','end',6); // 统计区间运行时间 精确到小数后6位
     * echo G('begin','end','m'); // 统计区间内存使用情况
     * 如果end标记位没有定义,则会自动以当前作为标记位
     * 其中统计内存使用需要 MEMORY_LIMIT_ON 常量为true才有效
     * </code>
     * @param string $start 开始标签
     * @param string $end 结束标签
     * @param integer|string $dec 小数位或者m
     * @return mixed
     */
    function G($start,$end='',$dec=4) {
        static $_info       =   array();
        static $_mem        =   array();
        if(is_float($end)) { // 记录时间
            $_info[$start]  =   $end;
        }elseif(!empty($end)){ // 统计时间和内存使用
            if(!isset($_info[$end])) $_info[$end]       =  microtime(TRUE);
            if(MEMORY_LIMIT_ON && $dec=='m'){
                if(!isset($_mem[$end])) $_mem[$end]     =  memory_get_usage();
                return number_format(($_mem[$end]-$_mem[$start])/1024);
            }else{
                return number_format(($_info[$end]-$_info[$start]),$dec);
            }
    
        }else{ // 记录时间和内存使用
            $_info[$start]  =  microtime(TRUE);
            if(MEMORY_LIMIT_ON) $_mem[$start]           =  memory_get_usage();
        }
        return null;
    }

    //blogurl:http://www.cnblogs.com/osfipin/

      解说:

    开发过程中,有些时候为了测试性能,经常需要调试某段代码的运行时间或者内存占用开销,系统提供了G方法可以很方便的获取某个区间的运行时间和内存占用情况。 例如:

    1. G('begin');
    2. // ...其他代码段
    3. G('end');
    4. // ...也许这里还有其他代码
    5. // 进行统计区间
    6. echo G('begin','end').'s';

    G('begin','end') 表示统计begin位置到end位置的执行时间(单位是秒),begin必须是一个已经标记过的位置,如果这个时候end位置还没被标记过,则会自动把当前位置标记为end标签,输出的结果类似于:0.0056s

    默认的统计精度是小数点后4位,如果觉得这个统计精度不够,还可以设置例如:

    1. G('begin','end',6).'s';

    可能的输出会变成:0.005587s

    如果你的环境支持内存占用统计的话,还可以使用G方法进行区间内存开销统计(单位为kb),例如:

    1. echo G('begin','end','m').'kb';

    第三个参数使用m表示进行内存开销统计,输出的结果可能是:625kb

    同样,如果end标签没有被标记的话,会自动把当前位置先标记位end标签。

    如果环境不支持内存统计,则该参数无效,仍然会进行区间运行时间统计。

  • 相关阅读:
    PHP 上传文件 function move_uploaded_file: failed to open stream
    python super() 方法使用
    python 负数转为无符号整数
    python Aes 加密 解密
    mongoDB 启动 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
    ansible使用
    字段类型binary
    7-14 求整数段和
    7-13 日K蜡烛图
    7-12 两个数的简单计算器
  • 原文地址:https://www.cnblogs.com/osfipin/p/4279991.html
Copyright © 2011-2022 走看看