Erlang / Erlang Basics Interview questions
How can you optimize message passing between heavy processes?
The main cost in Erlang message passing is copying the message into the receiver's mailbox, so optimization mostly means reducing what gets copied and how often.
- Use off-heap binaries for large payloads — binaries over 64 bytes are reference-counted, so passing one only copies a small reference, not the data itself.
- Batch messages instead of sending many tiny ones; fewer, larger messages amortize per-message scheduling and copy overhead.
- Avoid large process state that gets copied unnecessarily during garbage collection triggered by message arrival.
- Watch mailbox growth — a slow consumer with a growing mailbox means the sender is
outpacing the receiver; back-pressure (e.g. via
gen_server:callinstead ofcast) can force the sender to wait rather than flood the queue.
For very hot paths, keeping data in ETS and passing only a key/reference between processes avoids the message-copy cost entirely, at the price of losing per-message isolation for that data.
More Related questions...