<html>
  <head>
    <title>Chrome Perf Overview</title>
    <script src="ui/js/common.js"></script>
    <script language="javascript">
      function DisplayGraph(name, graph) {
        document.write('<td><iframe scrolling="no" height="250" width="400" src="http://build.chromium.org/buildbot/perf/');
        document.write(name);
        document.write('/report.html?history=50')
        var params = ParseParams();
        if (typeof graph == 'undefined') {
          if ('graph' in params) {
            graph = escape(params.graph);
          }
        } else if (graph != null) {
          document.write('&header=');
          document.write(graph);
        }
        if (graph != null) {
          document.write('&graph=');
          document.write(graph);
        }
        document.write('&lookout=1"></iframe></td>');
      }
    </script>
  </head>
  <body>
    <center>
      <h1>
        Currently showing
        <script language=javascript>
          var params = ParseParams();
          if ('graph' in params) {
            document.write(escape(params.graph))
          } else {
            document.write('overview')
          }
        </script>
      </h1>
      <p>
        <script>
        document.write('<p>(<a href="perf.html'
                       + window.location.search
                       + '">matrix view</a>)</p>');
        </script>
      </p>
      <p>
      [ <a href="overview.html">overview</a> |
        <a href="overview.html?graph=times">page-load-time</a> |
        <a href="overview.html?graph=vm_peak_b">vm-peak-browser</a> |
        <a href="overview.html?graph=vm_peak_r">vm-peak-renderer</a> |
        <a href="overview.html?graph=ws_peak_b">ws-peak-browser</a> |
        <a href="overview.html?graph=ws_peak_r">ws-peak-renderer</a> |
        <a href="overview.html?graph=total_op_b">io-op-browser</a> |
        <a href="overview.html?graph=total_byte_b">io-byte-browser</a> |
        <a href="overview.html?graph=commit_charge">commit_charge</a> ]
      </p>
      <h1>Sections below</h1>
      <p>
        <a href="#Chromium-Vista-v8-latest">Chromium Vista v8-latest</a> |
        <a href="#Chromium-Mac10.5-v8-latest">Chromium Mac 10.5 v8-latest</a> ]
        <a href="#Chromium-Mac10.6-v8-latest">Chromium Mac 10.6 v8-latest</a> ]
      </p>
      <h1 id="Chromium-Vista-v8-latest">Chromium Vista v8-latest</h1>
      <table>
        <tr>
            <script>DisplayGraph("vista-release-v8-latest/moz");</script>
            <script>DisplayGraph("vista-release-v8-latest/intl1");</script>
            <script>DisplayGraph("vista-release-v8-latest/intl2");</script>
        </tr>
        <tr>
            <script>DisplayGraph("vista-release-v8-latest/moz-http");</script>
            <script>DisplayGraph("vista-release-v8-latest/bloat-http");</script>
            <script>DisplayGraph("vista-release-v8-latest/dhtml");</script>
        </tr>
        <tr>
            <script>DisplayGraph("vista-release-v8-latest/startup");</script>
            <script>DisplayGraph("vista-release-v8-latest/new-tab-ui-cold");</script>
            <script>DisplayGraph("vista-release-v8-latest/memory");</script>
        </tr>
        <tr>
            <script>DisplayGraph("vista-release-v8-latest/sunspider");</script>
            <script>DisplayGraph("vista-release-v8-latest/v8_benchmark");</script>
            <script>DisplayGraph("vista-release-v8-latest/morejs");</script>
        </tr>
        <tr>
            <script>DisplayGraph("vista-release-v8-latest/dromaeo_domcore");</script>
            <script>DisplayGraph("vista-release-v8-latest/dromaeo_jslib");</script>
            <script>DisplayGraph("vista-release-v8-latest/new-tab-ui-warm");</script>
        </tr>
      </table>
      <h1 id="Chromium-Mac10.5-v8-latest">Chromium Mac 10.5 v8-latest</h1>
      <table>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/moz");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/intl1");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/intl2");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/moz-http");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/bloat-http");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/dhtml");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/startup");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/new-tab-ui-cold");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/memory");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/sunspider");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/v8_benchmark");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/dom_perf");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/morejs");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/dromaeo_domcore");</script>
            <script>DisplayGraph("mac-release-10.5-v8-latest/dromaeo_jslib");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.5-v8-latest/new-tab-ui-warm");</script>
        </tr>
      </table>
      <h1 id="Chromium-Mac10.6-v8-latest">Chromium Mac 10.6 v8-latest</h1>
      <table>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/moz");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/intl1");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/intl2");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/moz-http");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/bloat-http");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/dhtml");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/startup");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/new-tab-ui-cold");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/memory");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/sunspider");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/v8_benchmark");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/dom_perf");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/morejs");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/dromaeo_domcore");</script>
            <script>DisplayGraph("mac-release-10.6-v8-latest/dromaeo_jslib");</script>
        </tr>
        <tr>
            <script>DisplayGraph("mac-release-10.6-v8-latest/new-tab-ui-warm");</script>
        </tr>
      </table>
    </center>
  </body>
</html>

