PHP 计算代码执行耗时的代码修正网上普遍错误

代码如下:

$t1 = explode(' ', microtime());
// ... 执行代码 ...
$t2 = explode(' ', microtime());
echo ($t2[1]-$t1[1]).'s '.($t2[0]-$t1[0]).'ms';

其实稍微试一下, 就能发现这份代码有个严重的问题. 虽然 t2 得到的时间肯定比 t1 大, 但不代表, 它的微秒数就一定比 t1 的微秒数大. 所以直接相减的话, ms 部分有可能得到的是负数. 因此, 我自己稍微改动了一下, 代码如下:


代码如下:

$t1 = microtime(true);
// ... 执行代码 ...
$t2 = microtime(true);
echo '耗时'.round($t2-$t1,3).'秒';

简单说一下. microtime() 如果带个 true 参数, 返回的将是一个浮点类型. 这样 t1 和 t2 得到的就是两个浮点数, 相减之后得到之间的差. 由于浮点的位数很长, 或者说不确定, 所以再用个 round() 取出小数点后 3 位. 这样我们的目的就达到了~

(0)

相关推荐

  • PHP 一个页面执行时间类代码

    核心代码 <?php class Timer//页面执行时间类 { var starttime;//页面开始执行时间 var stoptime;//页面结束执行时间 var spendtime;//页面执行花费时间 function getmicrotime()//获取返回当前微秒数的浮点数 { list(usec,sec)=explode(" ",microtime()); return ((float)usec + (float)sec); } function start(

  • PHP大批量数据操作时临时调整内存与执行时间的方法

    复制代码 代码如下: ini_set('memory_limit', '250M'); //内存限制 set_time_limit(0); //

  • php 页面执行时间计算代码

    代码如下: 复制代码 代码如下: <? $pagestartime=microtime(); ?> <!--网页内容 start--> 网页内容 ... ... <!--网页内容 end--> <? $pageendtime = microtime(); $starttime = explode(" ",$pagestartime); $endtime = explode(" ",$pageendtime); $totalt

  • php set_time_limit(0) 设置程序执行时间的函数

    set_time_limit(0); 括号里边的数字是执行时间,如果为零说明永久执行直到程序结束,如果为大于零的数字,则不管程序是否执行完成,到了设定的秒数,程序结束. 一个简单的例子,在网页里显示1500条语句,如果未设置失效时间,则程序执行到791时结束了,如果把 set_time_limit(0); 前的注释符//去除,则程序直到1才结束. 复制代码 代码如下: <?php //set_time_limit(0); $i=1500; include ("inc/conn.php&qu

  • PHP 计算代码执行耗时的代码修正网上普遍错误

    复制代码 代码如下: $t1 = explode(' ', microtime()); // ... 执行代码 ... $t2 = explode(' ', microtime()); echo ($t2[1]-$t1[1]).'s '.($t2[0]-$t1[0]).'ms'; 其实稍微试一下, 就能发现这份代码有个严重的问题. 虽然 t2 得到的时间肯定比 t1 大, 但不代表, 它的微秒数就一定比 t1 的微秒数大. 所以直接相减的话, ms 部分有可能得到的是负数. 因此, 我自己稍微改

  • Golang记录、计算函数执行耗时、运行时间的一个简单方法

    先写一个公共函数, 比如在 common 包下有这么一个方法: // 写超时警告日志 通用方法 func TimeoutWarning(tag, detailed string, start time.Time, timeLimit float64) { dis := time.Now().Sub(start).Seconds() if dis > timeLimit { log.Warning(log.CENTER_COMMON_WARNING, tag, " detailed:&quo

  • 最新log4j2远程代码执行漏洞

    目录 问题描述 漏洞简介 临时解决方案 问题描述 在12月9日晚间出现了Apache Log4j2 远程代码执行漏洞攻击代码.该漏洞利用无需特殊配置,经多方验证,Apache Struts2.Apache Solr.Apache Druid.Apache Flink等均受影响.Apache Log4j2是一款流行的Java日志框架,建议广大交易所.钱包.DeFi项目方抓紧自查是否受漏洞影响,并尽快升级新版本. Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架

  • 最新log4j2远程代码执行漏洞(附解决方法)

    目录 问题描述 漏洞简介 临时解决方案 问题描述 在12月9日晚间出现了Apache Log4j2 远程代码执行漏洞攻击代码.该漏洞利用无需特殊配置,经多方验证,Apache Struts2.Apache Solr.Apache Druid.Apache Flink等均受影响.Apache Log4j2是一款流行的Java日志框架,建议广大交易所.钱包.DeFi项目方抓紧自查是否受漏洞影响,并尽快升级新版本. Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架

  • Lua中计算、执行字符串中Lua代码的方法

    一.Lua中执行字符串 运行过程中有个问题,我有个字符串,是一个数学表达式,如何计算这个字符串表达式的值呢? 比如,local param = "7*100", 我需要的结果其实是700,但是怎么样直接计算出这个值呢?方法如下 字符串前面 加个 "return" 然后loadstring以后得到一个function 然后执行获得700的返回值,这样通过转化,得到的结果如下: 二.以字符串形式执行Lua代码 有时候,我们在代码中希望能够动态的切换上下文,改变程序的处理

  • java代码执行字符串中的逻辑运算方法

    方式一 public class Test { public static void main(String[] args) throws Exception { String str = "(a or b) and c"; str = str.replaceAll("or", "||"); str = str.replaceAll("and", "&&"); System.out.prin

  • 使用tqdm显示Python代码执行进度功能

    在使用Python执行一些比较耗时的操作时,为了方便观察进度,通常使用进度条的方式来可视化呈现.Python中的tqdm就是用来实现此功能的. 先来看看tqdm的进度条效果: tqdm的基本用法 tqdm最主要的用法有3种,自动控制.手动控制或者用于脚本或命令行. 自动控制运行 最基本的用法,将tqdm()直接包装在任意迭代器上. from tqdm import tqdm import time text = "" for char in tqdm(["a", &

  • 使用Jacoco获取 Java 程序的代码执行覆盖率的步骤详解

    Jacoco是Java Code Coverage的缩写,顾名思义,它是获取Java代码执行覆盖率的一个工具,通常用它来获取单元测试覆盖率.它通过分析Java字节码来得到代码执行覆盖率,因此它还可以分析任何基于JVM的语言(如Croovy.Kotlin)的覆盖率.本文不讨论如何用Jacoco获取单元测试的代码覆盖率,而是从Jacoco的原理出发,介绍如何通过Jacoco获取SIT或者UAT的测试覆盖率.更准确来讲,是获取一个应用执行过的代码占总代码的比率.包括字节码指令覆盖率,分支覆盖率,圈复杂

  • VBS 添加右键计算文件MD5的实现代码

    最近相关的备份比较频繁,为了校验文件的完整性,老是要打开某文件HASH校验工具,比较麻烦,于是乎写了这个东东,文件较大时计算有点慢,文件的MD5值保存在剪贴板!效果如图: 使用方法: 1.先将GetMD5.reg文件导入注册表以添加右键菜单,GetMD5.reg代码如下: 复制代码 代码如下: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\HASH(&G)\command]@="WScript.exe //

  • Java实现等待所有子线程结束后再执行一段代码的方法

    本文实例讲述了Java实现等待所有子线程结束后再执行一段代码的方法.分享给大家供大家参考,具体如下: 今天有一个需求是:在一个方法中开启了一个子线程来执行操作,返回值依赖于子线程的执行结果,这样如果要返回正确的值,就需要开启子线程后 主线程等待子线程,然后子线程执行结束后,主线程再继续执行. 主线程等待子线程需要用到:CountDownLatch 代码如下: import java.util.concurrent.CountDownLatch; public class Counter { pu

随机推荐