Tracium is the Google Lighthouse tracing parser extracted into a stand-alone library.
Tracium is a modern alternative to Big Rig. Tracium correctly parses modern Chrome Traces (generated by Chrome 66+).
Install:
$ npm install tracium
Use:
const Tracium = require('tracium');
const traceJSON = JSON.parse(fs.readFileSync('./mytrace.json', 'utf8'));
const tasks = Tracium.computeMainThreadTasks(traceJSON, {
// |flatten| default to |false|. When false, only top-level tasks will be returned.
flatten: true,
});
Check out examples at //examples/ folder.
traceJson
<Object> A JSON of a Chromium traceoptions
<Object> Set of options for trace processingflatten
<boolean> Defaults tofalse
. Whether to flatten tasks tree.
- returns: <Array<Object>> An array of tasks:
kind
<string> describes task attribution. Can be one of the following:'parseHTML'
'styleLayout'
'paintCompositeRender'
'scriptParseCompile'
'scriptEvaluation'
'garbageCollection'
'other'
startTime
<number> monotonic start time in millisecondsendTime
<number> monotonic end time in millisecondsduration
<number> task duration in milliseconds, a.k.a. "wall time"selfTime
<number> time spent in the task at the current level of the task treeevent
<Object> original trace event object associated with the taskchildren
<Array<[Task]>> an array of child tasksparent
<?[Task]> a parent task if any
Returns an array of tasks that belong to the main thread of the inspected page.
If flatten
is passed to false
, than only top-level tasks will be returned.
An example task
{
event:
{ pid: 29772,
tid: 775,
ts: 588826692280,
ph: 'X',
cat: 'toplevel',
name: 'TaskQueueManager::ProcessTaskFromWorkQueue',
args:
{ src_file: '../../base/trace_event/trace_log.cc',
src_func: 'SetEnabled' },
dur: 27,
tdur: 22,
tts: 514358 },
startTime: 0,
endTime: 0.027,
children: [],
duration: 0.027,
selfTime: 0.027,
kind: 'other' }