首頁  >  文章  >  後端開發  >  PHP microtime用法點滴

PHP microtime用法點滴

WBOY
WBOY原創
2016-07-25 09:11:451395瀏覽

虽然我是个PHP新手,但是今天看到一段代码,忍不住修改了几行。

  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



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn