为什么要有Benchmark组件?

对于一个项目而言,不仅是要运行起来那么简单,还需要考到性能问题,而Benchmark组件可以帮助开发者监控程序运行时间运行内存,这就让开发者可以知道具体优化哪些地方。

Benchmark可以收集哪些数据?

Benchmark只有三个函数:

    /**
     * Set a benchmark marker
     *
     * Multiple calls to this function can be made so that several
     * execution points can be timed.
     *
     * @param   string  $name   Marker name
     * @return  void
     */
    public function mark($name)
    {
        $this->marker[$name] = microtime(TRUE);
    }
/**
     * Elapsed time
     *
     * Calculates the time difference between two marked points.
     *
     * If the first parameter is empty this function instead returns the
     * {elapsed_time} pseudo-variable. This permits the full system
     * execution time to be shown in a template. The output class will
     * swap the real value for this variable.
     *
     * @param   string  $point1     A particular marked point
     * @param   string  $point2     A particular marked point
     * @param   int $decimals   Number of decimal places
     *
     * @return  string  Calculated elapsed time on success,
     *          an '{elapsed_string}' if $point1 is empty
     *          or an empty string if $point1 is not found.
     */
    public function elapsed_time($point1 = '', $point2 = '', $decimals = 4)
    {
        if ($point1 === '')
        {
            return '{elapsed_time}';
        }

        if ( ! isset($this->marker[$point1]))
        {
            return '';
        }

        if ( ! isset($this->marker[$point2]))
        {
            $this->marker[$point2] = microtime(TRUE);
        }

        return number_format($this->marker[$point2] - $this->marker[$point1], $decimals);
    }
/**
     * Memory Usage
     *
     * Simply returns the {memory_usage} marker.
     *
     * This permits it to be put it anywhere in a template
     * without the memory being calculated until the end.
     * The output class will swap the real value for this variable.
     *
     * @return  string  '{memory_usage}'
     */
    public function memory_usage()
    {
        return '{memory_usage}';
    }

如何手记这些数据


$BM->mark('loading_time:_base_classes_start'); $BM->mark('loading_time:_base_classes_end'); $BM->elapsed_time('loading_time:_base_classes_start', 'oading_time:_base_classes_end');
Scroll to Top