php获取目标函数执行时间示例

写了一个类用来测试目标函数的执行时间。以下是类的定义代码:

代码如下:

<?php
/**
 * class EfficiencyTester
 * 效率测试器,测试函数的运行时间
 * @version 1.0 2013.04.13
 * @author Kross
 */
class EfficiencyTester {   
    /**
     * var $testTimes
     * 测试的次数
     */
    private $testTimes = 1000;

/**
     * function getTime()
     * 根据时间模式,获取时间戳
     * @param $timeModel 时间模式,默认:微秒
     * @return int 时间戳
     */
    private function getTime($timeModel = 'MS') {
        if ($timeModel == 'MS') {
            return microtime();
        } else if ($timeModel == 'S') {
            return time();
        } else {
            return microtime();
        }
    }
    /**
     * function testOnce()
     * 测试目标函数一次,返回运行时间
     * @param $functionName 目标函数名
     * @param $timeModel 时间模式,默认:微秒
     * @return double 目标函数运行一次的时间(很随机)
     */
    public function testOnce($functionName, $timeModel = 'MS') {       
        $startMicroTime = $this->getTime($timeModel);
        $functionName();
        $endMicroTime = $this->getTime($timeModel);

$costMicroTime = $endMicroTime - $startMicroTime;

return $costMicroTime;
    }
    /**
    * function test()
    * 测试目标函数多次,返回运行时间(平均值)
    * @param $functionName 目标函数名
    * @param $timeModel 时间模式,默认:微秒
    * @return double 目标函数运行的时间
    */
    public function test($functionName, $timeModel = 'MS') {
        $totalMicroTimes = 0;
        for ($i = 1; $i <= $this->testTimes; $i++) {
            $totalMicroTimes += $this->testOnce($functionName);
        }
        return $totalMicroTimes / $this->testTimes;
    }
}
?>

以下是类的测试代码:

代码如下:

<?php
require_once('../class/EfficiencyTester.class.php');
$e = new EfficiencyTester();
echo $e->test('rand');
?>

一开始我是直接使用 microtime() 获取时间的,后来考虑到如果想获得单位是秒的运行时间,这样写就不够多态了,然后我就写了一个getTime() 的函数来获取不同单位的时间戳,不过这样,貌似目标函数的运行时间变长了,可能是因为 getTime() 函数中的判断占用了一部分时间。

(0)

相关推荐

  • php实现用于计算执行时间的类实例

    本文实例讲述了php实现用于计算执行时间的类.分享给大家供大家参考.具体如下: 有了这个php类,计算函数或者一段代码的执行时间就简单了 <?php class c_Timer { var $t_start = 0; var $t_stop = 0; var $t_elapsed = 0; function start() { $this->t_start = microtime(); } function stop() { $this->t_stop = microtime(); }

  • PHP-Fcgi下PHP的执行时间设置方法

    一般情况下设置PHP脚本执行超时的时间 一.在php.ini里面设置 max_execution_time = 1800; 二.通过PHP的ini_set 函数设置 ini_set("max_execution_time", "1800"); 三.通过set_time_limit 函数设置 set_time_limit(1800); PHP-Fcgi下PHP的执行时间设置方法 昨天,一个程序需要导出500条数据,结果发现到150条是,Nginx报出504 Gatew

  • 显示程序执行时间php函数代码

    复制代码 代码如下: /**  * 程序执行时间  *  * @return  int 单位ms  */ function execute_time() {     $stime = explode ( ' ', SYS_START_TIME );     $etime = explode ( ' ', microtime () );     return number_format ( ($etime [1] + $etime [0] - $stime [1] - $stime [0]), 6

  • PHP间隔一段时间执行代码的方法

    本文实例讲述了PHP间隔一段时间执行代码的方法.分享给大家供大家参考.具体分析如下: PHP如何设置每隔一段时间自动执行某段代码?例如定时生成静态文件之类的,这就需要设置休眠时间,即每隔一段时间程序就会调用某段代码. 代码如下: 复制代码 代码如下: ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.  set_time_limit(0); // 执行时间为无限制,php默认执行时间是30秒,可以让程序无限制的执行下去  $interv

  • php计算当前程序执行时间示例

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

  • php计算函数执行时间的方法

    本文实例讲述了php计算函数执行时间的方法.分享给大家供大家参考.具体如下: 我们可以通过在程序的前后分别记录开始和结束时间,两个时间差就是程序的执行时间. <?php $long_str = "this is a test to see how much time md5 function takes to execute over this string"; // start timing from here $start = microtime(true); // func

  • PHP中使用微秒计算脚本执行时间例子

    在PHP中,大多数的时间格式都是以UNIX时间戳表示的,而UNIX时间戳是以s(秒)为最小的计量时间的单位.这对某些应用程序来说不够精确,所以可以调用microtime()返回当前UNIX时间戳和微妙数.该函数的原型如下: 复制代码 代码如下: mixed microtime([bool get_as_float]); //返回当前UNIX时间戳和微妙数 可以为该函数提供一个可选的布尔型参数,如果在调用时不提供这个参数,本函数以"msec sec"的格式返回一个字符串.其中sec是自U

  • php获取目标函数执行时间示例

    写了一个类用来测试目标函数的执行时间.以下是类的定义代码: 复制代码 代码如下: <?php/** * class EfficiencyTester * 效率测试器,测试函数的运行时间 * @version 1.0 2013.04.13 * @author Kross */class EfficiencyTester {        /**     * var $testTimes     * 测试的次数      */    private $testTimes = 1000; /**   

  • PHP获取页面执行时间的方法(推荐)

    一些循环代码,有时候要知道页面执行的时间,可以添加以下几行代码到页面头部和尾部: 头部: <?php $stime=microtime(true); 尾部: $etime=microtime(true);//获取程序执行结束的时间 $total=$etime-$stime; //计算差值 ?> 最后输出: echo "<br />当前页面执行时间为:{$total} 秒"; 以上所述是小编给大家介绍的PHP获取页面执行时间的方法(推荐),希望对大家有所帮助,如果

  • python3获取url文件大小示例代码

    在python3中,urllib2被替换为urllib.requeset,因此头文件中添加 import urllib.request as urllib2 def getRemoteFileSize(url, proxy=None): """ 通过content-length头获取远程文件大小 url - 目标文件URL proxy - 代理 """ opener = urllib2.build_opener() if proxy: if ur

  • Linux下通过gettimeofday函数获取程序段执行时间【推荐】

    在Linux下计算某个程序段执行的时间一般使用gettimeofday函数,此函数的声明在sys/time.h文件中.此函数接收两个结构体参数,分别为timeval.timezone. 两个结构体的声明如下: struct timeval { time_t tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; struct timezone { int tz_minuteswest; int tz_dsttime; }; 一般通过ge

  • ReactHooks批量更新state及获取路由参数示例解析

    目录 一.如何批量更新 控制台输出 二.Hooks如何获取路由参数 执行效果 一.如何批量更新 在[Hooks]中如果单独的进行状态的更新可能会导致页面的多次渲染: import { useState } from 'react'; import { unstable_batchedUpdates } from 'react-dom';//批量更新状态时使用 import React from 'react'; const Example = () => { const [count, setC

  • R语言使用cgdsr包获取TCGA数据示例详解

    目录 TCGA数据源 TCGA数据库探索工具 查看任意数据集的样本列表方式 选定数据形式及样本列表后获取感兴趣基因的信息,下载mRNA数据 选定样本列表获取临床信息 综合性获取 下载mRNA数据 获取病例列表的临床数据 从cBioPortal下载点突变信息 从cBioPortal下载拷贝数变异数据 把拷贝数及点突变信息结合画热图 TCGA数据源 众所周知,TCGA数据库是目前最综合全面的癌症病人相关组学数据库,包括的测序数据有: DNA Sequencing miRNA Sequencing P

  • linux获取进程执行时间方法示例

    1.前言 测试一个程序的执行时间,时间包括用户CPU时间.系统CPU时间.时钟时间.之前获取之前时间都是在程序的main函数用time函数实现,这个只能粗略的计算程序的执行时间,不能准确的获取其他时间.在看<APUE>时,书中有关程序时间测试程序,非常正规,提供这三个时间.如是,上网搜了一下,进行总结一下. 2.获取方法 有两种方法可以获取,第一种是用time命令,time 进程.第二种是通过在程序中进行记录,首先利用sysconf函数获取时钟滴答数,再用times获取tms结构. 查看tim

  • JS实现的验证身份证及获取地区功能示例

    本文实例讲述了JS实现的验证身份证及获取地区功能.分享给大家供大家参考,具体如下: 这里的代码可以用来验证身份证号,并且根据身份证号来判断是哪个省份及性别 代码示例: <head > <title></title> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> </head> <body

  • 利用python获取Ping结果示例代码

    前言 本文主要跟大家分享了关于利用python获取Ping结果的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍吧. 示例代码: # -*- coding: utf-8 -*- import subprocess import re def get_ping_result(ip_address): p = subprocess.Popen(["ping.exe", ip_address], stdin = subprocess.PIPE, stdout = subp

  • java获取ip地址示例

    如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端.但是在转发请求的HTTP头信息中,增加了X-FORWARDE

随机推荐