📄 rb_renderer_normal.php
字号:
FROM rb_res_run AS r1 INNER JOIN rb_res_normal_times AS t1 ON (r1.run_id = t1.fk_run_id)WHERE r1.run_id = %d AND r1.file = "%s"ORDER BY t1.label', $info['run_id'], $file); $html.= <<<EOT <h3>Database</h3> <p> Use the following SQL statement as a starting point, if you want to analyze the results manually. </p> <p> <pre>$sql </pre> </p>EOT; $html .= <<<EOT <h3>php -i for every binary</h3> <table cellspacing="2" cellpadding="2" border="1"> EOT; $binaries = array_merge(array($master_bin_label => $master_bin_file), $binaries); $i = 0; foreach ($binaries as $bin_label => $bin_file) { $color = (++$i % 2) ? ' bgcolor="#f0f0f0" ' : ''; $anchor = urlencode($bin_label); $cmd = sprintf("%s -i", $bin_file); $output = array(); $ret = 0; exec($cmd, $output, $ret); $output = htmlspecialchars(implode("\n", $output)); $html.= <<<EOT <tr $color> <th align="left" valign="top"><a name="$anchor">$bin_label ($bin_file)</a></th> </tr> <tr> <td align="left" valign="top"><pre><code>$output</code></pre></td> </tr>EOT; } $html.= <<<EOT </table> </font> </body></html>EOT; fwrite($fp, $html); fclose($fp); } public function renderOverviewHTML($run_label, $run_datetime) { $fastest = $this->storage->getFastestBinaries($run_label, $run_datetime); list($file, ) = each($fastest); $binaries = $this->storage->getBinaries($run_label, $file, $run_datetime); if (!file_exists(RB_OUTPUT_HTML_DIR) && !mkdir(RB_OUTPUT_HTML_DIR, 0755, true)) throw new Exception(sprintf("Cannot create output directory '%s'", RB_OUTPUT_HTML_DIR)); $htmlfile = sprintf('%s/index.html', RB_OUTPUT_HTML_DIR); if (!$fp = fopen($htmlfile, 'w')) throw new Exception(sprintf("Cannot open output file '%s'", $htmlfile)); $html = <<<EOT<html> <head> <title>Bench: $run_label ($run_datetime) $file</title> </head> <body> <font face="sans-serif"> <h1>$run_label ($run_datetime)</h1> <h3>Binaries</h3> <table cellspacing="2" cellpadding="2" border="1">EOT; $clean_stats = array(); foreach ($binaries as $bin_label => $bin_file) { $anchor = urlencode($bin_label); $html .= <<<EOT <tr> <th align="left" valign="top"><a href="#$anchor">$bin_label</a></th> <td align="left" valign="top"><a href="#$anchor">$bin_file</a></td> </tr>EOT; $clean_stats[$bin_label] = 0; } $html .= <<<EOT </table> <h3>Summary</h3> <p> Counters show for how many time figures a certain binary has been the fastest. For example, the following says that three figures are available for 'file.php' and for one figure 'Binary A' was faster than the other binaries and for the other two figures 'Binary C' was the fastest: <table cellspacing="2" cellpadding="2" border="1"> <tr> <td> </td> <th align="left" valign="top">Binary A</th> <th align="left" valign="top">Binary B</th> <th align="left" valign="top">Binary C</th> </tr> <tr> <td align="left valign="top">file.php</td> <td align="right" valign="top">1 (33%)</td> <td align="right" valign="top">0 (0%)</td> <td align="right" valign="top">2 (66%)</td> </tr> </table> </p> <table cellspacing="2" cellpadding="2" border="1"> <tr> <td colspan="3"> </td>EOT; foreach ($binaries as $bin_label => $bin_file) $html .= sprintf('<th colspan="2" align="left" valign="top">%s</th>', $bin_label); $html .= '</tr>' . "\n"; $i = 0; foreach ($fastest as $file => $filestats) { $stats = $clean_stats; $color = (++$i % 2) ? ' bgcolor="#f0f0f0" ' : ''; foreach ($filestats as $time_label => $bin_label) $stats[$bin_label]++; $total = array_sum($stats); $html .= sprintf('<tr%s><th align="left" valign="top"> <a href="%s.html">%s</a></th> <td align="right" valign="top">%d</td> <td align="right" valign="top">100%%</td>', $color, str_replace('.', '_', basename($file)), basename($file), $total); foreach ($binaries as $bin_label => $bin_file) { $html .= sprintf('<td align="right" valign="top">%d</td><td align="right" valign="top">%3d%%</td>', $stats[$bin_label], ($total) ? (100 / $total) * $stats[$bin_label] : 0); } $html .= '</tr>' . "\n"; } $html.= <<<EOT <h3>php -i for every binary</h3> <table cellspacing="2" cellpadding="2" border="1"> EOT; $i = 0; foreach ($binaries as $bin_label => $bin_file) { $color = (++$i % 2) ? ' bgcolor="#f0f0f0" ' : ''; $anchor = urlencode($bin_label); $cmd = sprintf("%s -i", $bin_file); $output = array(); $ret = 0; exec($cmd, $output, $ret); $output = htmlspecialchars(implode("\n", $output)); $html.= <<<EOT <tr $color> <th align="left" valign="top"><a name="$anchor">$bin_label ($bin_file)</a></th> </tr> <tr> <td align="left" valign="top"><pre><code>$output</code></pre></td> </tr>EOT; } $html.= <<<EOT </table> </font> </body></html>EOT; fwrite($fp, $html); fclose($fp); } public function renderRunWiki($run_label, $file, $run_datetime) { $this->renderRunHTML($run_label, $file, $run_datetime); $htmlfile = sprintf('%s/%s.html', RB_OUTPUT_HTML_DIR, str_replace('.', '_', basename($file))); $wikifile = sprintf('%s/%s_wiki.txt', RB_OUTPUT_HTML_DIR, str_replace('.', '_', basename($file))); preg_match_all("=<body[^>]*>(.*)</body>=siU", file_get_contents($htmlfile), $a); $body = explode("\n", $a[1][0]); foreach ($body as $k => $line) $body[$k] = '|' . str_replace('|', '', $line) . "\n"; $fp = fopen($wikifile, 'w'); fwrite($fp, implode('', $body)); fclose($fp); } public function renderOverviewWiki($run_label, $run_datetime) { $this->renderOverviewHTML($run_label, $run_datetime); $htmlfile = sprintf('%s/index.html', RB_OUTPUT_HTML_DIR); $wikifile = sprintf('%s/index_wiki.txt', RB_OUTPUT_HTML_DIR); preg_match_all("=<body[^>]*>(.*)</body>=siU", file_get_contents($htmlfile), $a); $body = explode("\n", $a[1][0]); foreach ($body as $k => $line) $body[$k] = '|' . str_replace('|', '', $line) . "\n"; $fp = fopen($wikifile, 'w'); fwrite($fp, implode('', $body)); fclose($fp); } protected function renderTimesTxt($master_times, $master_bin_label, $binary_label, $binary_file, $times) { $master_sum = array_sum($master_times); $times_sum = array_sum($times); printf("Binary : %-20s %3.5fs (vs. %-20s: %3.5fs = %02d%%)\n", $binary_label, $times_sum, $master_bin_label, $master_sum, (($master_sum != 0) ? ((100 / $master_sum) * $times_sum) : 0) ); printf("\n"); foreach ($times as $label => $runtime) { printf("%-40s %3.5fs (%3.5fs = %02d%%)\n", $label, $runtime, $master_times[$label], (($master_times[$label] != 0) ? (100 / $master_times[$label]) * $runtime : 0)); } } }?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -