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为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
10个实用的PHP代码片段
Sep 02 PHP
php文件上传的简单实例
Oct 19 PHP
php 邮件发送问题解决
Mar 22 PHP
PHP is_subclass_of函数的一个BUG和解决方法
Jun 01 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
Oct 09 PHP
php+mysql实现无限级分类
Nov 11 PHP
Smarty保留变量用法分析
May 23 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
浅谈thinkphp5 instance 的简单实现
Jul 30 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
Mar 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
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
小程序微信支付功能配置方法示例详解【基于thinkPHP】
2019/05/05 PHP
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
JavaScript 数组运用实现代码
2010/04/13 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
详解Vue2的diff算法
2021/01/06 Vue.js
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
pandas值替换方法
2018/07/10 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
用python做游戏的细节详解
2019/06/25 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python实现人像动漫化的示例代码
2020/05/17 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
有关HTML5中背景音乐的自动播放功能
2017/10/16 HTML / CSS
轻松制作精彩视频:Animoto
2018/09/19 全球购物
生物科学系大学生的自我评价
2013/12/20 职场文书
我为自己代言广告词
2014/03/18 职场文书
经典禁毒标语
2014/06/16 职场文书
2015年重阳节主持词
2015/07/04 职场文书
MySQL通过binlog恢复数据
2021/05/27 MySQL
解决Mysql中的innoDB幻读问题
2022/04/29 MySQL
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis