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中目录,文件操作详谈
Mar 19 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
May 12 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
微信 getAccessToken方法详解及实例
Nov 23 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
Jun 19 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
tp5框架前台无限极导航菜单类实现方法分析
Mar 29 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
星际争霸任务指南——人族
2020/03/04 星际争霸
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
thinkPHP和onethink微信支付插件分享
2019/08/11 PHP
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
jquery实现效果比较好的table选中行颜色
2014/03/25 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JS功能代码集锦
2016/05/04 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
微信小程序如何获取地址
2019/12/24 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
js实现缓动动画
2020/11/25 Javascript
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
Python从零开始创建区块链
2018/03/06 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
python实现证件照换底功能
2019/08/20 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
python enumerate内置函数用法总结
2020/01/07 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
公司员工活动策划方案
2014/08/20 职场文书
母亲节感言
2015/08/03 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android
css如何把元素固定在容器底部的四种方式
2022/06/16 HTML / CSS