php microtime获取浮点的时间戳


Posted in PHP onFebruary 21, 2010

一直以来用这个函数获取:

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 相关文章推荐
深入PHP中慎用双等于(==)的详解
Jun 06 PHP
destoon调用自定义模板及样式的公告栏
Jun 21 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
php去除数组中重复数据
Nov 18 PHP
Zend Studio使用技巧两则
Apr 01 PHP
PHP 闭包详解及实例代码
Sep 28 PHP
php+jQuery递归调用POST循环请求示例
Oct 14 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
redis查看连接数及php模拟并发创建redis连接的方法
Dec 15 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
php文件包含的几种方式总结
Sep 19 PHP
PHP+ajax 无刷新删除数据
Feb 20 #PHP
php 读取文件乱码问题
Feb 20 #PHP
判断是否为指定长度内字符串的php函数
Feb 16 #PHP
支持数组的ADDSLASHES的php函数
Feb 16 #PHP
php htmlspecialchars加强版
Feb 16 #PHP
php 数组二分法查找函数代码
Feb 16 #PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 #PHP
You might like
调频问题解答
2021/03/01 无线电
供参考的 php 学习提高路线分享
2011/10/23 PHP
ThinkPHP字符串函数及常用函数汇总
2014/07/18 PHP
关于js遍历表格的实例
2013/07/10 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
addeventlistener监听scroll跟touch(实例讲解)
2017/08/04 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
对pandas中to_dict的用法详解
2018/06/05 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
Blue Nile中国官网:全球知名的钻石和珠宝网络零售商
2020/03/22 全球购物
工程业务员工作职责
2013/12/07 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
《日月潭》教学反思
2014/02/28 职场文书
求职信怎么写
2014/05/23 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
社会学专业求职信
2014/07/17 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
小学运动会入场口号
2015/12/24 职场文书
学校团代会开幕词
2016/03/04 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
Mysql数据库事务的脏读幻读及不可重复读详解
2022/05/30 MySQL