Tool to show slow calls in your code runned by v8.
npm i -g slow-code-detector
scd your-index-js-file.js
– it creates bunch of files in current directory code.asm
hydrogen.cfg
out.txt
code.html
code.html
– is what you need, open it in the browser.
Also you can generate markdown file code.md
, just run with --md
option: scd --md index.js
Generated code.html
groupped by files and functions.
Every runtime call highlighted by gray. Call cost ~4ns.
Pink highlight is LoadGeneric or StoreGeneric. Generic read or write cost ~9ns.
If function in code is inlined it highlighted by blue, you can show its code by click.
If function is not inlined you can show non inline reason
by a hint on call function name.
If function deoptimized, it colored by red.
Every function reoptimization marked by recompile – max 10 times, else deopt: Optimize too many times
The scd
execute node
with some v8 trace options and parse given logs to find slow path calls.
node --trace-inlining --trace-hydrogen --trace-phase=Z --trace-deopt
You can use hydrogen.cfg
and code.asm
with IRHydra to investigate internal representation of your code