php microtime获取浮点的时间戳

2015-01-24信息快讯网

看到别人的源码中用microtime(true),查了下手册,原来从PHP 5.0.0 开始,microtime增加了这个参数。

一直以来用这个函数获取:
 
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函数microtime()用法与说明
php入门学习知识点一 PHP与MYSql连接与查询
php自定义函数call_user_func和call_user_func_array详解
PHP 获取MySQL数据库里所有表的实现代码
PHP setcookie设置Cookie用法(及设置无效的问题)
php中使用explode查找某个字符是否存在的方法
PHP array_multisort()函数的使用札记
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
php中比较简单的导入phpmyadmin生成的sql文件的方法
php设计模式 Delegation(委托模式)
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
允许phpmyadmin空密码登录的配置方法
PHP session有效期session.gc_maxlifetime
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
The specified CGI application misbehaved by not returning a complete set of HTTP headers
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
php set_magic_quotes_runtime() 函数过时解决方法
php set_time_limit(0) 设置程序执行时间的函数
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
PHP 最大运行时间 max_execution_time修改方法
php 魔术函数使用说明
PHP+ajax 无刷新删除数据
php 读取文件乱码问题
判断是否为指定长度内字符串的php函数
支持数组的ADDSLASHES的php函数
php htmlspecialchars加强版
php+mysql事务rollback&commit示例
PHP has encountered an Access Violation 错误的解决方法
PhpMyAdmin中无法导入sql文件的解决办法
phpMyAdmin链接MySql错误 个人解决方案
PHP strtotime函数详解
phpmyadmin导入(import)文件限制的解决办法
PHPMyadmin 配置文件详解(配置)
php self,$this,const,static,-&gt;的使用
php面向对象全攻略 (十) final static const关键字的使用
PHP has encountered an Access Violation at 7C94BD02解决方法
php strtotime 函数UNIX时间戳
How do I change MySQL timezone?
使用 MySQL Date/Time 类型
©2014-2024 dbsqp.com