no-image

Ethna_Plugin_Filter_Bench

超適当。


/**
 *  実行時間計測フィルタの実装
 *
 *  @author     halt feits
 *  @access     public
 *  @package    Ethna
 */
class Ethna_Plugin_Filter_Bench extends Ethna_Plugin_Filter
{
    var $bm;
    var $use_bm = true;

    /**
     *  実行前フィルタ
     *
     *  @access public
     */
    function preFilter()
    {
        if ($this->use_bm) {
            require_once 'Benchmark/Timer.php';
            $this->bm =& new Benchmark_Timer();
            $this->bm->start();
        }
    }

    function preActionFilter()
    {
        if ($this->use_bm) {
            $this->bm->setMarker('preAction');
        }
    }

    function postActionFilter()
    {
        if ($this->use_bm) {
            $this->bm->setMarker('postAction');
        }
    }

    /**
     *  実行後フィルタ
     *
     *  @access public
     */
    function postFilter()
    {
        if ($this->use_bm) {
            $this->bm->stop();
            $this->logger->log(LOG_NOTICE, "[{$_SERVER['REQUEST_URI']}] {$this->bm->getOutput(false, 'plain')}");
        }
    }
}

これを有効にして、etcのところで、noticeを表示するようにしておくと、


2007/06/13 12:50:10 Anubis[4233](NOTICE): Ethna_Plugin_Filter_Bench.postFilter(class/Ethna_Controller.php:815): [/halt/anubis/blog_show/500]
--------------------------------------------------------
marker      time index            ex time         perct
--------------------------------------------------------
Start       1181706610.46801700   -                0.00%
--------------------------------------------------------
preAction   1181706610.49430000   0.026283        12.13%
--------------------------------------------------------
postAction  1181706610.54609500   0.051795        23.90%
--------------------------------------------------------
Stop        1181706610.68471000   0.138615        63.97%
--------------------------------------------------------
total       -                     0.216693       100.00%
--------------------------------------------------------

という感じのが表示される。見ての通り、相当アバウトなので真面目な計測には全然使えないんだけど、Filter置いてコントローラーで有効にするだけで簡単に計測できるようになるという意味で使いどころはあるかなと。
とりあえず公開。
誰かがもっと真面目なやつ作って公開してくれるかもしれないしね!