blob: 3fdb03d1a0929d3c692564caf409787015814176 [file] [log] [blame]
<!DOCTYPE html>
<!-- Copyright 2017 the V8 project authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<html lang="en">
<head>
<!-- This will be overwritten by the v8.dev/tools exporter -->
<!-- ANALYTICS_PLACEHOLDER -->
<meta charset="utf-8"/>
<title>V8 Tick Processor</title>
<link rel="stylesheet" href="profview.css">
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet">
<script src="profview.js"></script>
<script src="profile-utils.js"></script>
</head>
<body onLoad="main.onLoad();" onResize="main.onResize();">
<h3 style="margin-top: 2px;">
Chrome V8 profiling log processor
</h3>
<input type="file" id="fileinput" /><div id="source-status"></div>
<br>
<hr>
<div id="help">
Usage:
<br>
<br>
Record the profile:
<pre>
d8 --prof your-file.js
</pre>
Then process the file (this resolves C++ symbols and produces
a JSON file with the profile data):
<pre>
&lt;v8-dir>/tools/linux-tick-processor --preprocess v8.log > v8.json
</pre>
To view the profile, click the <i>Choose file</i> button above and choose
the file in the dialog box.
<br>
<br>
For recording a profile from Chrome use:
<pre>
--no-sandbox --js-flags=--prof
</pre>
If running on Android use also use --single-process:
<pre>
--single-process --no-sandbox --js-flags=--prof
</pre>
If the profile is from Android pass the unstripped Chrome library to
resolve C++ symbols when processing the file using linux-tick-processor.
<pre>
&lt;v8-dir>/tools/linux-tick-processor --preprocess --apk-embedded-library=./out/Release/lib.unstripped/libchrome.so v8.log > v8.json
</pre>
More detailed instructions for Android here: https://v8.dev/docs/profile-chromium#android
</div>
<div id="timeline" style="display : none">
<div>
<canvas id="timeline-canvas"/>
</div>
Legend:
<div id="timeline-legend">
</div>
<label><input type="checkbox" id="show-logging"> Show logging</label>
<div>
Current code object: <span id="timeline-currentCode"></span>
<button id="source-viewer-hide-button">Hide source</button>
</div>
<div>
<table id="source-viewer"> </table>
</div>
</div>
<br>
<div id="mode-bar" style="display : none">
</div>
<div id="calltree" style="display : none">
<br>
Attribution:
<select id="calltree-attribution">
</select>
Top-level tree buckets:
<select id="calltree-categories">
</select>
Sort by:
<select id="calltree-sort">
</select>
<br>
<br>
<table id="calltree-table" class="calltree">
<thead>
<tr>
<th class="numeric">Time (incl)</th>
<th class="numeric">% of parent</th>
<th id="calltree-table-own-time-header" class="numeric">Own time</th>
<th>Function/category</th>
<th class="numeric">Ticks</th>
<th id="calltree-table-own-ticks-header" class="numeric">Own ticks</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<div id="summary" style="display : none">
</div>
<div id="function-details" style="display : none">
</div>
<p style="font-style:italic;">
<br>
<br>
<br>
Copyright the V8 Authors - Last change to this page: 2020/12/04
</p>
</body>
</html>