Vyacheslav Egorov
-
Microbenchmarks in the age of clankers
read it here
Published
-
Reading in 2025
read it here
Published
-
My year in books
read it here
Published
-
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
-
My Setup
read it here
Published
-
Microbenchmarking Dart (Part 1)
Are fixed-length lists really 43 times faster to allocate than growable ones?
Published
-
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
-
The fear of dart:mirrors
Is `dart:mirrors` really to blame for slow JSON deserialization?
Published
-
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
-
Crankshaft vs arguments object
read it here
Published
-
jsunderhood digest (in Russian)
A Russian-language digest of my week running the `@jsunderhood` Twitter account, answering questions about V8 internals.
Published
-
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
-
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
-
How the Grinch stole array.length access
Does caching `array.length` before a loop make it faster?
Published
-
new Fn(...) vs. Object.create(P)
read it here
Published
-
The Black Cat of Microbenchmarks
I am dissecting yet another jsPerf which produces confusing results.
Published
-
(Pre)release IRHydra 2.0
read it here
Published
-
Hidden classes vs jsPerf
Another exploration of misleading jsPerf results: this time prototype methods vs closures attached directly to the object.
Published
-
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
-
Why asm.js bothers me
read it here
Published
-
Release the IRHydra!
Presenting a browser-based tool for exploring IR and native code produced by V8 and Dart VM optimizing compilers.
Published
-
microbenchmarks fairy tale
What does accessing a string's length cost in V8?
Published
-
Shaky diagramming
About a little Dart tool I use to draw shaky diagrams for my posts.
Published
-
My JSConf EU 2012 talk
read it here
Published
-
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
-
V8's --trace-* flags and Chrome on Windows
read it here
Published
-
Explaining JavaScript VMs in JavaScript - Inline Caches
A pure JavaScript demonstration of how inline caches (aka ICs) work.
Published
-
My JSConf 2012 talk
read it here
Published
-
I-want-to-optimize-my-JS-application-on-V8 checklist
read it here
Published
-
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
-
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
-
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