Vyacheslav Egorov

  1. Microbenchmarks in the age of clankers

    read it here

    Published

  2. Reading in 2025

    read it here

    Published

  3. My year in books

    read it here

    Published

  4. Microbenchmarks are experiments

    Taking a look at a viral loops microbenchmark which like many other similar microbenchmarks does not measure anything useful or insightful.

    Published

  5. My Setup

    read it here

    Published

  6. Microbenchmarking Dart (Part 1)

    Are fixed-length lists really 43 times faster to allocate than growable ones?

    Published

  7. Maybe you don't need Rust and WASM to speed up your JS

    Mozilla sped up the source-map library by rewriting its core in Rust and compiling it to WASM. I am taking a look at JavaScript version in an attempt to make it faster.

    Published

  8. The fear of dart:mirrors

    Is `dart:mirrors` really to blame for slow JSON deserialization?

    Published

  9. Adventures in the land of substrings and RegExps.

    Why is `String.substring` slower in Dart VM than in V8, and what does it have to do with less_dart being slow?

    Published

  10. Crankshaft vs arguments object

    read it here

    Published

  11. jsunderhood digest (in Russian)

    A Russian-language digest of my week running the `@jsunderhood` Twitter account, answering questions about V8 internals.

    Published

  12. Browser as an Interactive Disassembler

    Trying to understand why HotSpot's C2 turned one loop into three led me to build Saga, a toy browser tool that rebuilds a CFG and an SSA IR from disassembly to make it readable.

    Published

  13. What's up with monomorphism?

    What do monomorphic, polymorphic and megamorphic actually mean? A tour of how inline caches collect type feedback and how V8's optimizing compiler uses it, and why too many shapes at one call site hurt performance.

    Published

  14. How the Grinch stole array.length access

    Does caching `array.length` before a loop make it faster?

    Published

  15. new Fn(...) vs. Object.create(P)

    read it here

    Published

  16. The Black Cat of Microbenchmarks

    I am dissecting yet another jsPerf which produces confusing results.

    Published

  17. (Pre)release IRHydra 2.0

    read it here

    Published

  18. Hidden classes vs jsPerf

    Another exploration of misleading jsPerf results: this time prototype methods vs closures attached directly to the object.

    Published

  19. Performance tuning as the art of weather forecast

    A simple jsPerf comparing `i * i` to `Math.pow(i, 2)` leads us down the rabbit hole of V8's idiosyncrasies.

    Published

  20. Why asm.js bothers me

    read it here

    Published

  21. Release the IRHydra!

    Presenting a browser-based tool for exploring IR and native code produced by V8 and Dart VM optimizing compilers.

    Published

  22. microbenchmarks fairy tale

    What does accessing a string's length cost in V8?

    Published

  23. Shaky diagramming

    About a little Dart tool I use to draw shaky diagrams for my posts.

    Published

  24. My JSConf EU 2012 talk

    read it here

    Published

  25. Grokking V8 closures for fun (and profit?)

    Dive into V8's implementation of variable capturing and how it can lead to unexpected performance effects and memory leaks.

    Published

  26. V8's --trace-* flags and Chrome on Windows

    read it here

    Published

  27. Explaining JavaScript VMs in JavaScript - Inline Caches

    A pure JavaScript demonstration of how inline caches (aka ICs) work.

    Published

  28. My JSConf 2012 talk

    read it here

    Published

  29. I-want-to-optimize-my-JS-application-on-V8 checklist

    read it here

    Published

  30. The trap of the performance sweet spot

    When writing performance sensitive JavaScript code you can resort to structuring it in a way that makes JS look like C. This way you can hit JS'es performance sweet spot, but the code itself will leave bitter aftertaste in your mouth.

    Published

  31. Dangers of cross language benchmark games

    V8 is scoring very low on a matrix multiplication microbenchmark, when using normal JS arrays. Can this be explained and rectified?

    Published

  32. Improved V8 external arrays support and nodejs Buffer type

    Crankshaft can finally optimize elementwise access to external arrays. This offers significant performance boost to node.js.

    Published