php microtime获取浮点的时间戳

 更新时间:2010年02月21日 10:24:08   作者:  
看到别人的源码中用microtime(true),查了下手册,原来从PHP 5.0.0 开始,microtime增加了这个参数。
一直以来用这个函数获取:
复制代码 代码如下:

function microtime_float(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

看到别人的源码中用microtime(true),查了下手册,原来从PHP 5.0.0 开始,microtime增加了这个参数。
引用
复制代码 代码如下:

mixed microtime ( [bool get_as_float] )
microtime() 当前 Unix 时间戳以及微秒数。本函数仅在支持 gettimeofday() 系统调用的操作系统下可用。
如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。
如果给出了 get_as_float 参数并且其值等价于 TRUE,microtime() 将返回一个浮点数。
注意: get_as_float 参数是 PHP 5.0.0 新加的。

如果程序肯定在PHP5以上的环境运行,那么就直接使用microtime(true)吧,比使用microtime_float函数至少快两倍。以下是我简单测试的程序代码。
复制代码 代码如下:

<?php
function microtime_float3(){
return microtime(true);
}
function microtime_float2(){
if( PHP_VERSION > 5){
return microtime(true);
}else{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
}
function microtime_float(){
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
function runtime($t1){
return number_format((microtime_float() - $t1)*1000, 4).'ms';
}
$t1 = microtime_float();
for($i=0;$i<10000;$i++){
microtime_float();
}
echo "microtime_float=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);
for($i=0;$i<10000;$i++){
microtime(true);
}
echo "microtime_true=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);
for($i=0;$i<10000;$i++){
microtime_float2();
}
echo "microtime_float2=====";
echo runtime($t1).'<br>';
$t1 = microtime(true);
for($i=0;$i<10000;$i++){
microtime_float3();
}
echo "microtime_float3=====";
echo runtime($t1).'<br>';
?>

本机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
在PHP5的环境下,直接使用microtime(true);显然是最快的。microtime_float2和microtime_float3都可以在不改变原有程序的情况下,直接修改函数内容来实现性能的轻微提升。microtime_float2可以做为兼容旧版本的写法。

相关文章

  • 在php MYSQL中插入当前时间

    在php MYSQL中插入当前时间

    mysql时间函数
    2008-04-04
  • PHP实用小技巧之调用录像的方法

    PHP实用小技巧之调用录像的方法

    这篇文章主要给大家介绍了关于PHP实用小技巧之调用录像的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者实用PHP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • PHP基于Redis消息队列实现发布微博的方法

    PHP基于Redis消息队列实现发布微博的方法

    这篇文章主要介绍了PHP基于Redis消息队列实现发布微博的方法,结合实例形式分析了php+redis数据库的安装、连接、读取、插入等相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • PHP使用xpath解析XML的方法详解

    PHP使用xpath解析XML的方法详解

    这篇文章主要介绍了PHP使用xpath解析XML的方法,结合实例形式详细分析了Xpath语法以及通过Xpath解析xml文档的操作步骤与相关实现技巧,需要的朋友可以参考下
    2017-05-05
  • 项目中应用Redis+Php的场景

    项目中应用Redis+Php的场景

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。今天我们来看下php结合redis的一些应用场景
    2016-05-05
  • ie6 动态缩略图不显示的原因

    ie6 动态缩略图不显示的原因

    其实这又引出了服务器的输出控制和浏览器的缓存问题,这有点复杂了,以后有机会再研究了。
    2009-06-06
  • php实现简单洗牌算法

    php实现简单洗牌算法

    本篇文章是对php实现简单洗牌算法的程序代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php 判断字符串中是否包含html标签

    php 判断字符串中是否包含html标签

    本篇文章主要是对使用php判断字符串中是否包含html标签的实例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • PHP5.6读写excel表格文件操作示例

    PHP5.6读写excel表格文件操作示例

    这篇文章主要介绍了PHP5.6读写excel表格文件操作,结合实例形式分析了php5.6环境下使用PHPExcel插件针对Excel表格读写的相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • PHP 获取某年第几周的开始日期和结束日期的实例

    PHP 获取某年第几周的开始日期和结束日期的实例

    下面小编就为大家分享一篇PHP 获取某年第几周的开始日期和结束日期的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01

最新评论