Session
Optimizing Sequential Erlang
While implementing Apache Arrow for Erlang recently, I found handling the intensive parts in native code slow, so I wrote it in pure Erlang. It had to be performant because it would support Erlang's Telemetry implementation - vital to any BEAM web app.
With my initial code too slow, I had to learn a black art: optimizing sequential Erlang.
But it was easy to find optimizations to make, even easier to over optimize, and painfully easy to optimize the wrong thing completely. I realized that I had 2 aspects to learn:
First, making a single optimization: How do I choose the right knob to turn? By how much? Did I get the results I expected? Is it maintainable?
Second, optimizing the system as a whole: Which bottlenecks to focus on and by how much? How do I stay pragmatic?
Let me share what I learned:
- The processes of performance optimization.
- Applying CS theory to design optimizations.
- The specifics of profiling, optimizing and hypothesizing for the BEAM
![](https://sessionize.com/image/c2c2-400o400o2-9Kmzc2SkJ9CC9dw1MjvAhj.jpg)
Benjamin Philip
Elixir and FP Enthusiast, Linux user, Highschooler
Bengaluru, India
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top