欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實現(xiàn)記錄代碼運行時間封裝類實例教程

 更新時間:2017年05月08日 11:36:49   作者:Furion  
這篇文章主要給大家介紹了利用PHP實現(xiàn)記錄代碼運行時間的封裝類的相關(guān)教程,文中給出了詳細的示例代碼供大家參考學(xué)習(xí),需要的朋友可以參考下

前言

本文介紹的是利用php記錄代碼運行時間測量的相關(guān)內(nèi)容,分享給大家供大家參考學(xué)習(xí)。一般在要求性能的代碼中, 會加入測試代碼進行計算。不過每次都要寫microtime, end – start 未必太麻煩了, 所以簡單的寫了一個類去搞,下面來看看詳細的介紹:

示例代碼

class TimeCost
{

 private $cost = array();
 private $record = array();
 private $scale = 6;
 public function __construct($scale = 6)
 {
 $this->cost = array();
 $this->record = array();
 $this->scale = $scale;
 }

 public function __toString()
 {
 return $this->getString();
 }

 /**
 * start to cal time.
 *
 * @param mixed $key
 */
 public function addCost($key)
 {
 $this->cost[$key] = microtime(true);
 }

 /**
 * stop to cal time.
 *
 * @param mixed $key
 */
 public function closeCost($key)
 {
 $cost = bcsub(microtime(true), $this->cost[$key], $this->scale);

 if (in_array($key, array_keys($this->record))) {
  $this->record[$key] = bcadd($cost, $this->record[$key], $this->scale);
 } else {
  $this->record[$key] = $cost;
 }
 return $cost;
 }

 
 public function getString($key = null)
 {
 if ($key) {
  return "{$key}[{$this->record[$key]}]";
 }

 $str = '';
 foreach ($this->record as $k => $v) {
  $str .= "{$k}[{$v}]";
 }
 return $str;
 }
}

用法

$obj = new TimeCost();
$token = 'test_a';
$obj->addCost($token);
some_code();

$obj->closeCost($token);
$reslut = $obj->getString($token);

說明

1、時間精度: 默認是保留了6位, 已經(jīng)足夠了, 想要更高精度, 可以在new對象的時候指定$scale參數(shù)

2、token: token是為了表示某段代碼, 對應(yīng)的結(jié)果會以key(token), value的形式寫入到record數(shù)組中。

所以用一個token多次進行addCost和closeClost的結(jié)果會進行累積。

3、getString: 傳遞token則返回token對應(yīng)的結(jié)果, 默認會將record中的所有結(jié)果拼接返回。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • JS設(shè)計模式之策略模式概念與用法分析

    JS設(shè)計模式之策略模式概念與用法分析

    這篇文章主要介紹了JS設(shè)計模式之策略模式概念與用法,簡單分析了策略模式的基本概念、原理并結(jié)合實例形式分析了javascript實現(xiàn)與使用策略模式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • js查錯流程歸納

    js查錯流程歸納

    歸納是為了更好的理解。平時同事有問題找我?guī)兔鉀Q問題,往往都是很小的問題,這種情況他們并不是缺乏解決問題的知識,而是需要找到問題的辦法
    2012-05-05
  • javascript下對于事件、事件流、事件觸發(fā)的順序隨便說說

    javascript下對于事件、事件流、事件觸發(fā)的順序隨便說說

    向同一個標(biāo)簽 動態(tài)的添加事件是 執(zhí)行的順序在ie和其他非ie內(nèi)核的瀏覽器有所不同 ie是“先進先出 ” 就是最先添加的最先執(zhí)行,其他非ie內(nèi)核的瀏覽器是 “先進后出”,就是 最后添加的事件 先執(zhí)行。
    2010-07-07
  • 瀏覽器視頻幀操作方法?requestVideoFrameCallback()

    瀏覽器視頻幀操作方法?requestVideoFrameCallback()

    這篇文章主要介紹了瀏覽器視頻幀操作方法?requestVideoFrameCallback(),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • JS+css 圖片自動縮放自適應(yīng)大小

    JS+css 圖片自動縮放自適應(yīng)大小

    編輯器上傳的圖片太大了,把FF和IE撐的走形,所以希望圖片在某些頁面里要有固定大小,如果需要某個范圍,用getElementByname來設(shè)定,也是一個道理:
    2013-08-08
  • webpack實踐之DLLPlugin 和 DLLReferencePlugin的使用教程

    webpack實踐之DLLPlugin 和 DLLReferencePlugin的使用教程

    這篇文章主要介紹了webpack實踐之DLLPlugin 和 DLLReferencePlugin的使用教程,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-06-06
  • javascript一些實用技巧小結(jié)

    javascript一些實用技巧小結(jié)

    javascript一些實用技巧小結(jié),學(xué)習(xí)js的朋友可以看下。
    2011-03-03
  • javascript從定義到執(zhí)行 你不知道的那些事

    javascript從定義到執(zhí)行 你不知道的那些事

    這篇文章主要介紹了javascript從定義到執(zhí)行,你不知道的那些事,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript 布爾操作符解析  && || !

    JavaScript 布爾操作符解析 && || !

    在一門編程語言中,布爾操作符的重要性堪比相等操作符。如果沒有測試兩個值關(guān)系的能力,那么諸如if...else和循環(huán)之類的語句就不會有用武之地了。布爾操作符一共有3個: 非、與、或
    2012-08-08
  • JavaScript 俄羅斯方塊游戲?qū)崿F(xiàn)方法與代碼解釋

    JavaScript 俄羅斯方塊游戲?qū)崿F(xiàn)方法與代碼解釋

    這篇文章主要介紹了JavaScript 俄羅斯方塊游戲,結(jié)合實例形式詳細分析了JavaScript 俄羅斯方塊游戲原理、實現(xiàn)步驟及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-04-04

最新評論