php獲取目標(biāo)函數(shù)執(zhí)行時間示例
寫了一個類用來測試目標(biāo)函數(shù)的執(zhí)行時間。以下是類的定義代碼:
<?php
/**
* class EfficiencyTester
* 效率測試器,測試函數(shù)的運(yùn)行時間
* @version 1.0 2013.04.13
* @author Kross
*/
class EfficiencyTester {
/**
* var $testTimes
* 測試的次數(shù)
*/
private $testTimes = 1000;
/**
* function getTime()
* 根據(jù)時間模式,獲取時間戳
* @param $timeModel 時間模式,默認(rèn):微秒
* @return int 時間戳
*/
private function getTime($timeModel = 'MS') {
if ($timeModel == 'MS') {
return microtime();
} else if ($timeModel == 'S') {
return time();
} else {
return microtime();
}
}
/**
* function testOnce()
* 測試目標(biāo)函數(shù)一次,返回運(yùn)行時間
* @param $functionName 目標(biāo)函數(shù)名
* @param $timeModel 時間模式,默認(rèn):微秒
* @return double 目標(biāo)函數(shù)運(yùn)行一次的時間(很隨機(jī))
*/
public function testOnce($functionName, $timeModel = 'MS') {
$startMicroTime = $this->getTime($timeModel);
$functionName();
$endMicroTime = $this->getTime($timeModel);
$costMicroTime = $endMicroTime - $startMicroTime;
return $costMicroTime;
}
/**
* function test()
* 測試目標(biāo)函數(shù)多次,返回運(yùn)行時間(平均值)
* @param $functionName 目標(biāo)函數(shù)名
* @param $timeModel 時間模式,默認(rèn):微秒
* @return double 目標(biāo)函數(shù)運(yùn)行的時間
*/
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() 獲取時間的,后來考慮到如果想獲得單位是秒的運(yùn)行時間,這樣寫就不夠多態(tài)了,然后我就寫了一個getTime() 的函數(shù)來獲取不同單位的時間戳,不過這樣,貌似目標(biāo)函數(shù)的運(yùn)行時間變長了,可能是因為 getTime() 函數(shù)中的判斷占用了一部分時間。
相關(guān)文章
Laravel實現(xiàn)搜索的時候分頁并攜帶參數(shù)
今天小編就為大家分享一篇Laravel實現(xiàn)搜索的時候分頁并攜帶參數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
Laravel 4.2 中隊列服務(wù)(queue)使用感受
Laravel的隊列組件為許多隊列服務(wù)提供了統(tǒng)一的API接口。隊列服務(wù)讓你可以異步處理一個耗時任務(wù),比如延遲發(fā)送一封郵件,從而大大加快了應(yīng)用的Web請求處理速度。2014-10-10
Laravel 框架基于自帶的用戶系統(tǒng)實現(xiàn)登錄注冊及錯誤處理功能分析
這篇文章主要介紹了Laravel 框架基于自帶的用戶系統(tǒng)實現(xiàn)登錄注冊及錯誤處理功能,結(jié)合實例形式分析了laravel框架自帶用戶系統(tǒng)的基本使用方法及操作注意事項,需要的朋友可以參考下2020-04-04
PHP+ajaxfileupload+jcrop插件完美實現(xiàn)頭像上傳剪裁
在做項目的時候,經(jīng)常需要一些會員系統(tǒng)相關(guān)的內(nèi)容,比如頭像的上傳與裁剪等等,下面將這塊內(nèi)容分享給大家2014-06-06
php微信公眾號開發(fā)(2)百度BAE搭建和數(shù)據(jù)庫使用
這篇文章主要介紹了php微信公眾號開發(fā)第二課,百度BAE搭建和數(shù)據(jù)庫使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
windows7配置Nginx+php+mysql的詳細(xì)教程
這篇文章主要介紹了windows7配置Nginx+php+mysql的詳細(xì)教程 的相關(guān)資料,需要的朋友可以參考下2016-09-09

