Performance and Lies
summary
Yella handles about 1,000,000 events/sec per node and real wins come from measurement, JVM flags, and small code shapes. Benchmarks must boot a fresh JVM or JIT path dependency skews results; Leiningen’s default startup options that prioritize fast code loading drop throughput from ~1M to ~300k unless overridden. Extracting tiny functions fixes an inlining budget 325 bytecodes issue and raises a hot path from 25k → 248k events/sec. Use Flight Recorder for accurate profiling, replace tiny vectors with defrecord/deftype to save ~23%, and watch keyword vs string lookups (1.4ms → 300µs).
AI-written summary · about
chapters (7)
- 0:00Introduction
- 1:57Measuring Performance
- 4:00Benchmarking
- 13:00Inlining
- 15:23Performance degradation
- 19:55Safe points
- 23:33Closure
related talks
23mDressed up performance in Clojure
23mPractical Clojure Profiling in Production
34mPredictably Fast Clojure
24mPanel with Ben Sless and Léo Noel
31mClojure at 4,000 msg/s-What We Learned, Loved, and Loathed
41mManaging One of the World's Largest Clojure Code Bases
43mSimple ideas with huge impact from Clojure and Rama
32mClojure, Java 9, and You
