understand-js-runtimes
understand-js-runtimes copied to clipboard
List of different up-to-date (2021) resources about Javascript engines
Understanding Javascript Runtimes (Focused on V8)
I gathered these various resources about Javascript interpreters and V8 in particular by preparing a conference on understanding how Javascript engines work.
We use theses informations everyday at Kuzzle to develop our scalable open source backend to offer the best performances to our users.
Link to the slides: https://docs.google.com/presentation/d/13AHi75kKZPM74pBLc9zg3s5hBkFSIiM3z_yqwRx7C8E/edit
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
:question::question: If you have any question, you can fill an issue on this repo and I will try to answer you the best I can :point_right: New Question
Optimizations
- Closures optimizations & reducing object size by Petka Antonov (Bluebird) - 2019 (archive)
- Various Tricks to Optimize JS Code by Paul Ryan (Alligator) - 2019 (archive)
Objects and Properties
- Javascript Types and effect on Hidden Classes by Benedikt Meurer (v8) and Mathias Bynens (v8) - 2019 (archive)
- Hidden Classes and Inline Cache Explanation by Benedikt Meurer (v8) and Mathias Bynens (v8) - 2018 (archive)
- Prototype Chain Explanation by Benedikt Meurer (v8) and Mathias Bynens (v8) - 2018 (archive)
- Slack Tracking and Backing Store by Michael Stanton (v8) - 2020 (archive)
- Fast vs Slow Properties by Camillo Bruni (v8) - 2017 (archive)
Closures
- How Closures Works by Logan R. Kearsley - 2019 (archive)
- Closures Compilation and Allocation by Bergi - 2016 (archive)
- Closure Context and Closure Chain by Davic Shariff (Amazon) - 2013 (archive)
- Are Arrow Function Faster by Mathias Bynens (v8) - 2019 (archive)
Javascript Interpreter Workflow
- Interpreter and Compiler: hidden classes, inline caching, polymorphism and megamorphism by Rainer Hahnekamp - 2018 (archive)
- Interpreter Just-In-Time by Alvin Wan (LogRocket) - 2019 (archive)
- Ignition Design Document by rmcilroy@ and oth@ - 2016
- Turbofan Speculative Optimization by Benedikt Meurer (v8) - 2017 (archive)
- Ignition Presentation by Ross McIlroy (Google London)
- Inline Caches with Monomorphism, Polymorphism and Megamorphism by Vyacheslav Egorov - 2015 (archive)
- Inside JavaScript Engines, Part 1: Parsing by Yan Hulyi - 2022 (archive)
- Sparkplug — a non-optimizing JavaScript compiler by Leszek Swirski - 2021 (archive)
Tools
- Node.js Runtime Options List - 2019 (archive)
- ESlint sort-keys rule
- Indicium - System Analyzer by Zeynep Cankara - 2020 (archive)
Others
- Differences between Traditional interpreter, JIT compiler, JIT interpreter and AOT compiler by Jörg W Mittag - 2015 (archive)
- Micro Benchmark Issues by jmrk (v8) - 2019 (archive)
- Micro Benchmark Fairy tale by Vyacheslav Egorov - 2012 (archive)
- Exploring v8 performance characteristics in Node by David Mark Clements - 2016 (archive)
- Understanding Ignition Bytecode by Franziska Hinkelmann (Google) - 2017 (archive)
- Notes and resources related to v8 and thus Node.js performance by Thorsten Lorenz - 2018 (archive)