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 相关文章推荐
一个目录遍历函数
Oct 09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
浅谈PHP接收POST数据方式
Jun 05 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
Jul 31 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
php合并数组并保留键值的实现方法
Mar 12 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
php新建文件的方法实例
Sep 26 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实时显示输出
2008/10/02 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
浅析PHP程序设计中的MVC编程思想
2014/07/28 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
angularjs指令中的compile与link函数详解
2014/12/06 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
js创建对象几种方式的优缺点对比
2016/09/28 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[47:50]Secret vs VP 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python之wxPython菜单使用详解
2014/09/28 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
scrapy头部修改的方法详解
2020/12/06 Python
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
研究生毕业鉴定
2014/01/29 职场文书
优秀团队获奖感言
2014/02/19 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
数学教师个人工作总结
2015/02/06 职场文书
MySQL系列之九 mysql查询缓存及索引
2021/07/02 MySQL
Java面试题冲刺第十六天--消息队列
2021/08/07 面试题
关于EntityWrapper的in用法
2022/03/22 Java/Android