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)
归档时间: |
|
查看次数: |
6203 次 |
最近记录: |