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 Mysql日期和时间函数集合
Nov 16 PHP
PHP 中关于ord($str)&amp;gt;0x80的详细说明
Sep 23 PHP
使用PHP获取当前url路径的函数以及服务器变量
Jun 29 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP使用token防止表单重复提交的方法
Apr 07 PHP
php面向对象值单例模式
May 03 PHP
PHP session会话操作技巧小结
Sep 27 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
Oct 14 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分页时出现的Fatal error的解决方法
2011/04/18 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
Yii数据读取与跳转参数传递用法实例分析
2016/07/12 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
javascript 文档的编码问题解决
2009/03/01 Javascript
Webkit的跨域安全问题说明
2011/09/13 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
JavaScript错误处理
2015/02/03 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
基于BootStrap的前端分页带省略号和上下页效果
2017/05/18 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
用python代码做configure文件
2014/07/20 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
利用HTML5 Canvas制作一个简单的打飞机游戏
2015/05/11 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
户外用品商店创业计划书
2014/01/29 职场文书
党性观念心得体会
2014/09/03 职场文书
现货白银电话营销话术
2015/05/29 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python