a JavaScript performance companion

This is a static version of monomorphist. This project has been discontinued.

Thanks to the awesome work of the V8 team, Crankshaft is no more. Turbofan is now enabled by default.

Two useful tools to find out which parts of your JS won't get optimized by V8.

V8 is Google's powerful JavaScript engine, built for and shipped with the open source Chromium project. Having a very fast JavaScript engine is arguably what drove Google Chrome adoption and while its architecture remains singular, parts of its design inspired significative improvements in most of the other JavaScript engines.

V8 is also the JavaScript engine shipped with Node.js. It is probably in the context of Node.js that most people started trying to understand how V8 works and how to work with V8. Optimizing backend code being significantly more interesting to developers than optimizing for a specific web browser.

Here is a short overview of V8 JavaScript compiling infrastructure going over the main components you should know about in order to understand what makes V8 fast, what optimizes JavaScript code and what happens when V8 cannot optimize your code.

monomorphist is an open source project providing two useful tools:

The first one shows the optimization status of JavaScript functions. Its main purpose is to spot deoptimizations and Crankshaft bailouts. The second one helps understanding what happens under the hood by looking at the internal representation and assembly generated by V8 when it compiles JavaScript code.

You don't need monomorphist to access these information, monomorphist is just a hosted tool abstracting some tricky details like passing the right flags to V8 or having to compile V8 with the right flags to let you access the IR or assembly it generates.

Another advantage of monorphist is that it hosts a great number of different Node versions and V8 versions.