NodeProf: An efficient instrumentation and profiling framework for Graal.js.
The tool is open source. Please feel free to report issues or contribute directly.
The latest supported GraalVM JavaScript version is 23.0.1.
Get the mx build tool:
git clone https://github.com/graalvm/mx.git
Use mx to download a JDK for building GraalVM and set the JAVA_HOME environment variable accordingly:
mx fetch-jdk --java-distribution labsjdk-ce-17
export JAVA_HOME=PATH_TO_THE_DOWNLOADED_JDK
Get dependent projects and build:
mkdir workspace-nodeprof
cd workspace-nodeprof
git clone https://github.com/Haiyang-Sun/nodeprof.js.git
cd nodeprof.js
mx sforceimports
mx build
Run tests:
mx test-all
Detailed explanation can be found in the Tutorial;
The goals of NodeProf are:
- Use AST-level instrumentation which can benefit from the partial evaluation of the Graal compiler and have a much lower overhead compared to source-code instrumentation framework such as Jalangi
- Compatible to analysis written in Jalangi detail.
- Comprehensive coverage for NPM modules and Node.js libraries.
- Compliant to the latest ECMAScript specification (thanks to Graal.js)
NodeProf is available under the following license:
Thanks to Daniele Bonetta, Alexander Jordan, and Christian Humer from Oracle Labs for the help during the implementation.
- Haiyang Sun
- Alexander Jordan
- Daniele Bonetta
- BarrensZeppelin