PHP의 마이크로타임 관련 지식 정리

WBOY
풀어 주다: 2016-07-25 09:07:32
원래의
917명이 탐색했습니다.
  1. class runTime {

  2. var $StartTime = 0;
  3. var $StopTime = 0;
  4. var $TimeSpent = 0;

  5. function start(){

  6. $this->StartTime = microtime();
  7. }

  8. function stop(){

  9. $this->StopTime = microtime();
  10. }

  11. function spent() {

  12. if ($this->TimeSpent) {
  13. return $this->TimeSpent;
  14. } else {
  15. $StartMicro = substr($this->StartTime,0,10);
  16. $StartSecond = substr($this->StartTime,11,10);
  17. $StopMicro = substr($this->StopTime,0,10);
  18. $StopSecond = substr($this->StopTime,11,10);
  19. $start = floatval($StartMicro) $StartSecond;
  20. $stop = floatval($StopMicro) $StopSecond;
  21. $this->TimeSpent = $stop - $start;
  22. return round($this->TimeSpent,8);
  23. }
  24. } // end function
  25. }

复制代码

注解:

1、为什么说封装欠妥? 在使用过程中,我发现那几个类的属性,没必要作为var (public )形式出现,既然用了class,那么就遵照下面向对象的一些基本规则,这几个变量完全可以用private 访问控制。

2、microtime 用得不够好? 手册上关于microtime 的一些说明:

定义和用法 microtime() 函数返回当前 Unix 时间戳和微秒数。

如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。

在PHP5 以上版本,是可以接受参数true,这样就能直接返回浮点数,而且效率会比现在这样做高不少。 下面是网上找到的一段小代码,可以做参考:

  1. function microtime_float3(){
  2. return microtime(true);
  3. }

  4. function microtime_float2(){

  5. if( PHP_VERSION > 5){
  6. return microtime(true);
  7. }else{
  8. list($usec, $sec) = explode(" ", microtime());
  9. return ((float)$usec (float)$sec);
  10. }
  11. }

  12. function microtime_float(){

  13. list($usec, $sec) = explode(" ", microtime());
  14. return ((float)$usec (float)$sec);
  15. }

  16. function runtime($t1){

  17. return number_format((microtime_float() - $t1)*1000, 4).'ms';
  18. }

  19. $t1 = microtime_float();

  20. for($i=0;$i<10000;$i ){
  21. microtime_float();
  22. }
  23. echo "microtime_float=====";
  24. echo runtime($t1).'
    ';
  25. $t1 = microtime(true);

  26. for($i=0;$i<10000;$i ){

  27. microtime(true);
  28. }
  29. echo "microtime_true=====";
  30. echo runtime($t1).'
    ';
  31. $t1 = microtime(true);

  32. for($i=0;$i<10000;$i ){

  33. microtime_float2();
  34. }

  35. echo "microtime_float2=====";

  36. echo runtime($t1).'
    ';
  37. $t1 = microtime(true);

  38. for($i=0;$i<10000;$i ){

  39. microtime_float3();
  40. }
  41. echo "microtime_float3=====";
  42. echo runtime($t1).'
    ';
  43. ?>

复制代码

本机winxp运行结果: microtime_float=====109.5631ms microtime_true=====38.8160ms microtime_float2=====52.7902ms microtime_float3=====45.0699ms Linux上运行结果: microtime_float=====47.2510ms microtime_true=====9.2051ms microtime_float2=====16.3319ms microtime_float3=====12.2800ms



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿