ロゴ メインコンテンツへ
RSSフィード
「Web 開発」に関連する記事一覧

PHPで特定区間の処理時間を計測するユーティリティークラス

2021/06/11
(この記事の文字数: 249)
PHP 

C#ではよく以下のように Disposer を使って特定区間の時間を計測するような以下のようなクラスを作って使ったりしています。

using(new ScopedStopwatch(time => Console.WriteLine($"hoge: {time} ms")))
{
    // 時間を計測したい処理
}

PHPでも似たようなことができないのか調べたら自分で Disposer 的なものを作ればできそうなことがわかったので作ったものを載せておきます。(ただし、以下の例はPHP 7以降でないと動作しないと思います)

class ScopedStopwatch
{
    private $start;
    private $logFunc;

    function __construct($logFunc)	{
        $this->logFunc = $logFunc;
        $this->start = microtime(true);
    }

    function dispose() {
        $end = microtime(true);
        $milliseconds = ($end - $this->start) * 1000;
        ($this->logFunc)($milliseconds);
    }
}

function using($disposable, $func) {
    $func();
    $disposable->dispose();
}

以下が利用例です。これで毎回開始時間、終了時間をとって引き算するコードを書かなくて済みます。

using(new ScopedStopwatch(function($ms){ echo $ms." ms"; }), function(){
// 計測したい処理
});

// 実行結果例: 1003.231048584 ms

ついでにJavaScriptではこちらの記事のようにすれば同様のことが可能です。


  このエントリーをはてなブックマークに追加  

<<「Web 開発」の記事一覧に戻る

コメント(0 件)



コンテンツロード: 0.0077 sec
Copyright(C)2006-2024 puarts All Rights Reserved