为了账号安全,请及时绑定邮箱和手机立即绑定

PHP实现程序计时和内存统计类

标签:
PHP

需求

用PHP搭建web程序的时候很常见的一点就是要统计程序运行的时间来评估一段PHP是否好坏,而PHP也提供microtime()这样的函数来轻松的获取运行时间,而我们最好的方式就是“别人写好,拿来主义”,这也避免了重复造轮子的尴尬,极大地提升了程序开发的效率。

具体实践

首先我们看下java的获取运行时间的代码

//java
  public final void getTime() {        long start = System.currentTimeMillis();
        runcode();        long end = System.currentTimeMillis();
        System.out.println("运行时间:" + (end - start) + "毫秒");//应该是end - start
    }

可以发现是基本思路是设置两个时间锚点,最后两个时间相减就好,我们也封装一个这样的PHP 的class以后方便调用呀。

<?php/**
* @author:michaelgbw
* @version:1.0 (2016-06-17)
*
*/header('content-type:text/html;charset=utf-8');    class codeStatus{        /**
        * @param:boolen $time_type时间类型, boolen$show_m是否显示内存,
        * boolen$show_type,false是array,ture为json,$regmax是数据保留几位
        *
        *
        */
        public $regmax;        public $runTime=0;        public $time_type;        public $is_show_memory;        public $show_type;        private static $t1;        private static $t2;        public function __construct($time_type = false , $show_m= true, $show_type = false,$regmax=3){            $this->regmax=$regmax;            $this->is_show_memory=$show_m;            $this->time_type=$time_type;            $this->show_type=$show_type;
        }        public function timeStart(){            self::$t1=microtime(true);
        }        public function timeEnd(){            self::$t2=microtime(true);
        }        private function getTime(){            if(self::$t1 != '' && self::$t2 !=''){                if($this->time_type== false ){                    return  '耗时'.round(self::$t2-self::$t1,$this->regmax).'秒';
                }                else if($this->time_type == true){                    return '耗时'.round(self::$t2 - self::$t1,($this->regmax + 3)) * 1000 .'毫秒';
                }
            }            else{                return "error param";
            }
        }        private function getmemory(){
            $memory     = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024, $this->regmax).'KB'; 
                return '占用内存:'  . $memory;
        }        public function showStatus(){            if($this->is_show_memory == true){
                $arr=array(self::getTime(),self::getmemory());
            }            else{
                $arr=array(self::getTime());
            }            if($this->show_type == false){                return $arr;
            }            else{                return json_encode($arr);
            }
        }

    }

主要就是调用microtimememory_get_usagel来进行相关操作。我们用这个来测试下吧:

///////////////////test///////////////
    $c= new codeStatus(true);
    $c->timeStart();
    $arr=array();    for ($i=0; $i <100; $i++) { 
        $arr[]=rand(0,5000);
    }    function selectsort($array){
      $count=count($array);      if($count<=0)        return false;      else{        for($i=0;$i<$count;$i++)            for($j=$i+1;$j<$count;$j++){                if($array[$i]>$array[$j]){
                    $tmp=$array[$j];
                    $array[$j]=$array[$i];
                    $array[$i]=$tmp;
                }
            }
      }      return $array;
    }
    selectsort($arr);
    $c->timeEnd();
    print_r($c->showStatus());

测试一个选择排序的运行时间和内存占用

结果

还行吧,发现好多常用操作,自己封装下还是蛮方便的,今后开发什么的直接就用,哈哈~



作者:michaelgbw
链接:https://www.jianshu.com/p/96c5641a98b3

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消