登录  /  注册

PHP microtime用法点滴

php中文网
发布: 2016-07-25 09:11:45
原创
1231人浏览过

虽然我是个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 microtime_float();
  21. }
  22. echo "microtime_float=====";
  23. echo runtime($t1).'
    ';
  24. $t1 = microtime(true);
  25. for($i=0;$i microtime(true);

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

  31. }
  32. echo "microtime_float2=====";

  33. echo runtime($t1).'
    ';
  34. $t1 = microtime(true);
  35. for($i=0;$i microtime_float3();

  36. }
  37. echo "microtime_float3=====";
  38. echo runtime($t1).'
    ';
  39. ?>
复制代码

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



智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号