phpmicrotime获取浮点的时间戳
获取 时间 浮点
2023-06-13 09:14:16 时间
一直以来用这个函数获取:
复制代码代码如下:
functionmicrotime_float(){
list($usec,$sec)=explode("",microtime());
return((float)$usec+(float)$sec);
}
看到别人的源码中用microtime(true),查了下手册,原来从PHP5.0.0开始,microtime增加了这个参数。
引用
mixedmicrotime([boolget_as_float])
microtime()当前Unix时间戳以及微秒数。本函数仅在支持gettimeofday()系统调用的操作系统下可用。
如果调用时不带可选参数,本函数以"msecsec"的格式返回一个字符串,其中sec是自Unix纪元(0:00:00January1,1970GMT)起到现在的秒数,msec是微秒部分。字符串的两部分都是以秒为单位返回的。
如果给出了get_as_float参数并且其值等价于TRUE,microtime()将返回一个浮点数。
注意:get_as_float参数是PHP5.0.0新加的。
如果程序肯定在PHP5以上的环境运行,那么就直接使用microtime(true)吧,比使用microtime_float函数至少快两倍。以下是我简单测试的程序代码。
<?php
functionmicrotime_float3(){
returnmicrotime(true);
}
functionmicrotime_float2(){
if(PHP_VERSION>5){
returnmicrotime(true);
}else{
list($usec,$sec)=explode("",microtime());
return((float)$usec+(float)$sec);
}
}
functionmicrotime_float(){
list($usec,$sec)=explode("",microtime());
return((float)$usec+(float)$sec);
}
functionruntime($t1){
returnnumber_format((microtime_float()-$t1)*1000,4)."ms";
}
$t1=microtime_float();
for($i=0;$i<10000;$i++){
microtime_float();
}
echo"microtime_float=====";
echoruntime($t1)."<br>";
$t1=microtime(true);
for($i=0;$i<10000;$i++){
microtime(true);
}
echo"microtime_true=====";
echoruntime($t1)."<br>";
$t1=microtime(true);
for($i=0;$i<10000;$i++){
microtime_float2();
}
echo"microtime_float2=====";
echoruntime($t1)."<br>";
$t1=microtime(true);
for($i=0;$i<10000;$i++){
microtime_float3();
}
echo"microtime_float3=====";
echoruntime($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可以做为兼容旧版本的写法。
相关文章
- Python获取时间戳及常用的时间格式转换[通俗易懂]
- 【Linux编程】如何将gettimeofday获取的时间信息转换成可显示的字符串时间?
- SpringMVC 获取请求参数
- jackson反序列化器获取类型
- 【Android 应用开发】多点触控 ( 多点触控事件 | PointerId | PointerIndex | 坐标获取 | 触摸点个数 )
- 一键获取GPL注释文件
- Typecho根据文章cid获取文章信息
- jquery获取父级元素、子级元素、兄弟元素详解编程语言
- 记录MySQL查询:获取随机记录(mysql查询随机)
- Qt获取当前时间(超详细)
- 最后一天Oracle获取当月最后一天: 实现简单方案(oracle获取当月)
- Linux系统获取毫秒级时间的方法(linux获取系统毫秒)
- MySQL数据实时推送:新技术助力获取更多信息(mysql数据推送)
- Oracle 数据库中如何获取时间的最大值?(oracle 时间最大值)
- 使用MSSQL语句获取年月日:简单而有效。(mssql 获取年月日)
- 如何快捷获取Redis时间(获取redis时间命令)
- 有效利用Redis Key获取资源(获取redis key)
- 急速简易前台轻松获取Redis的值(前台怎么获取redis值)
- 在Oracle中如何正确获取时间(oracle中怎么取时间)
- 时间Redis中得到Key的过期时间(redis获取key过期)
- 怎样调用动态获取的自定义对象的方法
- asp.netgridview的Rowcommand命令中获取行索引的方法总结
- JS动态获取当前时间,并写到特定的区域
- 浅析JQuery获取和设置Select选项的常用方法总结
- php获取目标函数执行时间示例
- node.js正则表达式获取网页中所有链接的代码实例
- php获取文章上一页与下一页的方法