I'm still making performance improvements to SCI (Small #clojure Interpreter) which powers #babashka, #nbbcljs etc.
Things that gave me the best results:
1. Do work at analysis (compile) time instead of runtime if possible 馃У
2. Loop unrolling: instead of (dynamically) iterating over the length of a collection, use a fixed number (1-20) of locals that you can refer to directly
3. Implement locals using mutable arrays instead of (immutable) hash maps
4. Remove dead code (duh!)
@borkdude feels like you鈥檒l be soon generating machine code on the fly :)
2. Loop unrolling: instead of (dynamically) iterating over the length of a collection, use a fixed number (1-20) of locals that you can refer to directly
3. Implement locals using mutable arrays instead of (immutable) hash maps
4. Remove dead code (duh!)