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

Benjamin Philip

Elixir and FP Enthusiast, Linux user, Highschooler

Bengaluru, India

Actions

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