| <!DOCTYPE html> | |
| <!-- Copyright 2013 the V8 project authors. All rights reserved. | |
| Redistribution and use in source and binary forms, with or without | |
| modification, are permitted provided that the following conditions are | |
| met: | |
| * Redistributions of source code must retain the above copyright | |
| notice, this list of conditions and the following disclaimer. | |
| * Redistributions in binary form must reproduce the above | |
| copyright notice, this list of conditions and the following | |
| disclaimer in the documentation and/or other materials provided | |
| with the distribution. | |
| * Neither the name of Google Inc. nor the names of its | |
| contributors may be used to endorse or promote products derived | |
| from this software without specific prior written permission. | |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --> | |
| <html lang="en-us"> | |
| <head> | |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| <title>V8 profile log plotter</title> | |
| <link rel="stylesheet" type="text/css" href="profviz.css"> | |
| <script src="profviz.js"></script> | |
| </head> | |
| <body onload="onload()"> | |
| <div id="content"> | |
| <img src="" id="plot" type="image/svg+xml" class="display" | |
| width="1200" height="600" class="float-right"/> | |
| <textarea id="prof" class="display" disabled=true></textarea> | |
| <br/> | |
| <table width="1200"> | |
| <tr> | |
| <td width="330"> | |
| <button id="start" onclick="start()"> | |
| Start | |
| </button> | |
| <button id="reset" onclick="ui.reset(); worker.reset();"> | |
| Reset | |
| </button> | |
| <button id="toggledisplay" onclick="ui.toggle();"> | |
| Show profile | |
| </button> | |
| </td> | |
| <td width="220"> | |
| <input type="file" id="file" onchange="ui.reset();"/> | |
| </td> | |
| <td width="300"> | |
| <label title="You can manually choose the range | |
| to plot only part of the log file."> | |
| <span class="tooltip">Range</span>: | |
| </label> | |
| <input type="text" id="range_start" class="range"/> | |
| <label>to</label> | |
| <input type="text" id="range_end" class="range"/> | |
| </td> | |
| <td width="350"> | |
| <label title="We model profiling overhead by accounting a constant | |
| execution delay to each log entry. Adjust to better suit | |
| your computer's performance."> | |
| <span class="tooltip">Delay per log entry</span>: | |
| </label> | |
| <input type="text" id="distortion" class="range" value="4500"/> | |
| <label>picoseconds</label> | |
| </td> | |
| </tr> | |
| </table> | |
| <br/> | |
| <textarea class="log" id="log" rows="8" disabled=true></textarea> | |
| <div class="text"> | |
| <h1> | |
| <a href="javascript:ui.info('instructions');" class="unroll"> | |
| Instructions | |
| </a> | |
| </h1> | |
| <div id="instructions"> | |
| <ol> | |
| <li> | |
| Run V8 with | |
| <span class="tt">--prof --log-timer-events</span>, | |
| or alternatively,<br/> | |
| Chrome with | |
| <span class="tt"> | |
| --no-sandbox --js-flags="--prof --log-timer-events" | |
| </span> to produce <span class="tt">v8.log</span>. | |
| </li> | |
| <li> | |
| Open | |
| <span class="tt">v8.log</span> | |
| on this page. Don't worry, it won't be uploaded anywhere. | |
| </li> | |
| <li> | |
| Click "Start" to start number crunching. This will take a while. | |
| </li> | |
| <li> | |
| Click "Show plot/profile" to switch between the statistical profile and | |
| the timeline plot.<br/> | |
| C++ items are missing in the statistical profile because symbol | |
| information is not available.<br> | |
| Consider using the | |
| <a href="https://code.google.com/p/v8/wiki/V8Profiler"> | |
| command-line utility | |
| </a> instead. | |
| </li> | |
| </ol> | |
| If you expect multiple V8 instances to run concurrently, for example | |
| with several tabs in Chrome,<br/> | |
| add the V8 flag <span class="tt">--logfile=v8.%p.log</span> | |
| so that each instance writes to its own log file. | |
| </div> | |
| </div> | |
| <div class="text"> | |
| <h1> | |
| <a href="javascript:ui.info('credits');" class="unroll"> | |
| Credits | |
| </a> | |
| </h1> | |
| <div id="credits"> | |
| <ul> | |
| <li> | |
| Christian Huettig for the | |
| <a href="http://gnuplot.respawned.com/">Javascript port</a> | |
| of Gnuplot 4.6.3. | |
| </li> | |
| <li> | |
| The | |
| <a href="https://github.com/kripken/emscripten">Emscripten compiler</a> | |
| that made the port possible. | |
| </li> | |
| <li> | |
| The <a href="http://www.gnuplot.info/">Gnuplot project</a>. | |
| </li> | |
| <li> | |
| The <a href="https://developers.google.com/v8/">V8 project</a>. | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </body> | |
| </html> |