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中的integer类型使用分析
Jul 27 PHP
php学习之 循环结构实现代码
Jun 09 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
如何打开php的gd2库
Feb 09 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 PHP
用php如何解决大文件分片上传问题
Jul 07 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
php简单防盗链实现方法
2015/07/29 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
vue中如何实现变量和字符串拼接
2017/06/19 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
python 实现插入排序算法
2012/06/05 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
速记Python布尔值
2017/11/09 Python
python绘制双柱形图代码实例
2017/12/14 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
致共产党员倡议书
2014/04/16 职场文书
教师学期末个人总结
2015/02/13 职场文书
初二英语教学反思
2016/02/15 职场文书
《包身工》教学反思
2016/02/23 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
使用Redis实现分布式锁的方法
2022/06/16 Redis
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android