
Episode 37
037: Performance in Elm
We talk about performance tuning Elm applications.
August 16, 20211h 8m
Audio is streamed directly from the publisher (cdn.simplecast.com) as published in their RSS feed. Play Podcasts does not host this file. Rights-holders can request removal through the copyright & takedown page.
Show Notes
elm-review-performance- Tail call optimizations
- Jeroen's blog post on Tail-call optimization in Elm
- Evan Czaplicki's chapter on Tail-Call Optimization and how to write optimized code
- Lighthouse Elm Radio episode
- Ju Liu's Performant Elm blog post series
- Avoid memoized state when possible to avoid stale data
Html.Lazy- Elm's html lazy only works when the function and args have the same reference as before.
List.mapwill return a list with a new reference, for example. - Elm has function-level dead code elimination
- Referencing a record pulls the whole record in no matter how many fields are used directly
bcp-47-language-tagpackage- Elm list extra gets split by function, unlike lodash which needs to be split
- Elm Core Dict package has O(logn) complexity for operations like insert
- JavaScript Objects aren't optimized for removing/adding properties
- "What's Up With Monomorphism"
elm-optimize-level-2elm-explorations/benchmark- Jeroen's list-extra PRs (with reference to the benchmark for it) for functions
gatherWithisInfixOf - webpagetest.org (or web.dev performance testing)
- Netlify Lighthouse plugin
- RSLint - fast version of ESLint, but doesn't have custom rules
- Instructions to minify Elm code
- Jake and Surma talk about optimizing sites - Setting up a static render in 30 minutes
- Jake Archibald's talk explaining JavaScript's event loop and requestAnimationFrame - In The Loop