simprof
A simple code profiler.
Basic usage
const Profiler = ; Profiler;const profiler = 'Foo'; let prof = profiler;// ...// Do stuff// ...prof;
Getting the results
To get a dump of the profiler results, send SIGUSR2
to the relevant node process:
kill -s USR2 31337
Note that the profiler starts disabled.
In addition to explicitly enabling it with Profiler.enable()
,
it will be enabled by sending the USR2
signal to it.
This means that you can get a dump from a disabled profiler by sending the process USR2
twice.
Advanced usage
const Profiler = ; // Create a new profiler instance, often one per file.const profiler = 'Whatever'; { // Create a named profiler block // NOTE: There is no magic syntax here, // `#vanilla` is just a common way to refer to an instance method. let prof = profiler; // DO ALL THE THINGS this; ; ; this; // End the profiler block prof; } { // You can have nested profiler blocks, // which is helpful for HUGE MONOLITHIC FUNCTIONS and whatnot. // NOTE: Again, no magic syntax here, just human-readable names. let prof = profiler; let profFoo = profiler; let foo = this; foo; profFoo; let profBar = profiler; let bar = this; bar; profBar; let profBaz = profiler; let baz = this; baz; profBaz; prof; } async { // This wraps and immediately runs the given function return await profiler; } { // This allows a sequence of steps within an overall function to be individually profiled let profseq = profiler; profseq; // do stuff profseq; // do stuff profseq; // do stuff profseq; }