PHP microtime基准功能时间比较

mcb*_*eav 8 php performance benchmarking

我目前正在使用此函数来测试一些PHP脚本,脚本获取执行所需的microtime,并将其写入服务器上的日志,但我遇到的问题是我不知道什么是正常的时间.脚本在下面跟着我的一些时间,任何人都可以让我知道我希望在什么样的时间范围内?

站在页面的开头

global $start_time; $start_time = microtime();
Run Code Online (Sandbox Code Playgroud)

页面末尾的地方

global $start_time;
$ra_start = explode(' ', $start_time);
$ra_end = explode(' ', microtime());
$cpu_time = ($ra_end[1]+$ra_end[0]) - ($ra_start[1]+$ra_start[0]);
$f = fopen('/home/mcbeav/cpu_usage.log', 'a', 1);
// time seconds request by_ip
fwrite($f, date('m-d-Y H:m')."\t".$cpu_time."\t".$_SERVER['SERVER_NAME']."\t".$_SERVER['PHP_SELF']."\t".$_SERVER['REMOTE_ADDR']."\n");
fclose($f);
Run Code Online (Sandbox Code Playgroud)

相同页面的结果

0.10285401344299
0.021783828735352
0.018580913543701
0.042204856872559
Run Code Online (Sandbox Code Playgroud)

dqh*_*cks 12

这取决于你在做什么.发生了很多事吗?

这是我很久以前制作的基准测试课程.您可以使用静态方法在代码(开始,结束等)中创建标记,然后使用另一种静态方法在页面底部打印报告.还记录内存使用情况.这有点乱,因为它使用静态方法.更好的方法是使用XDebug配置代码:

<?php

    // time and memory benchmarking library
    class benchmark {

        // benchmark marker array
        protected static $benchmark_markers = array();
        // benchmark total duration
        protected static $total_duration = 0;

        // prevents new implimentation
        protected function __construct() {}

        // create new benchmark marker
        public static function create_benchmark_marker($marker_name) {
            $current_time = self::get_microtime();
            // get duration since last marker
            $duration = 0;
            if (self::$benchmark_markers) {
                $last_time = end(self::$benchmark_markers);
                $duration = $current_time - $last_time['end_time'];
            }
            // add to total duration
            self::$total_duration += $duration;
            // add benchmark marker to static array
            self::$benchmark_markers[] = array('name' => $marker_name, 'end_time' => $current_time, 'duration' => $duration, 'memory' => memory_get_usage());
        }

        // report benchmarking
        public static function print_report() {
            self::print_report_head();
            // output each marker line
            foreach (self::$benchmark_markers as $marker_values) {
                if ($marker_values['duration']) {
                    self::print_marker($marker_values, $last_marker_name);
                }
                $last_marker_name = $marker_values['name'];
            }
            self::print_report_foot();
        }

        // get high-precision microtime
        protected static function get_microtime() {
            return preg_replace('/^0(.+?) (.+?)$/', '$2$1', microtime());
        }

        protected static function print_report_head() {
            echo '<table style="clear: both; border-style: none; border-spacing: 1px; background-color: #ccc; font-family: Arial, Helvetica, sans-serif; font-size: 12px;">
                <tr>
                <th style="background-color: #ddd;">Benchmark Range</th>
                <th style="background-color: #ddd;">Seconds</th>
                <th style="background-color: #ddd;">% of Total</th>
                <th style="background-color: #ddd;">Memory Usage</th>
                </tr>';
        }

        protected static function print_marker($marker_values, $last_marker_name) {
            echo '<tr>
                <td style="background-color: #eee;">' . $last_marker_name . ' -> ' . $marker_values['name'] . '</td>
                <td style="text-align: right; background-color: #eee;">' . round($marker_values['duration'], 6) . '</td>
                <td style="text-align: right; background-color: #eee;">' . round(($marker_values['duration'] / self::$total_duration) * 100, 2) . '%</td>
                <td style="text-align: right; background-color: #eee;">' . number_format($marker_values['memory']) . '</td>
                </tr>';
        }

        protected static function print_report_foot() {
            echo '<tr>
                <td style="background-color: #eee;">Total/Peak</td>
                <td style="text-align: right; background-color: #eee;">' . round(self::$total_duration, 6) . '</td>
                <td style="text-align: right; background-color: #eee;">100%</td>
                <td style="text-align: right; background-color: #eee;">' . number_format(memory_get_peak_usage()) . '</td>
                </tr>
                </table>';
        }
    }
?>
Run Code Online (Sandbox Code Playgroud)