虽然我是个

  1. var $StartTime = 0;

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

  4. function start(){

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

  7. function stop(){

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

  10. function spent() {

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

复制代码

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

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

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

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

下面是网上找到的一段小代码,可以做参考:

  1. return microtime(true);

  2. }

  3. function microtime_float2(){

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

  11. function microtime_float(){

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

  15. function runtime($t1){

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

  18. $t1 = microtime_float();

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

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

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

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

  32. microtime_float2();
  33. }

  34. echo "microtime_float2=====";

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

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

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

复制代码

本机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



09-18 08:20