Bumper.jl -- a quick guide to Bump allocators for ultra-high performance intermediate allocations
12-01, 15:25–15:55 (Europe/Amsterdam), Auditorium

Creating and garbage-collecting arrays in the middle of a performance sensitive piece of code is one of the most common performance pitfalls in the julia language. Bumper.jl is a julia package which provides users with a way to create and destroy intermediate arrays with zero performance compromises, and useful features for developers.


Bump allocators (also known as arena allocators) are a simple, yet powerful strategy that allows for extremely fast allocation and deallocation of dynamically sized regions of memory, so long as the point at which the allocation and deallocation occur are statically determined. The most famous and ubiquitous example of a bump allocator available in almost every programming language is the call stack.

While Julia does allows one to allocate statically sized objects onto the call-stack, it currently has no way to create dynamically sized arrays on that stack. Bumper.jl is a Julia package for creating your own separately managed stack-like objects in order to make the creation and destruction of intermediate arrays blazing fast, while avoiding some of the footguns that can accompany bump allocators.

In this talk I will discuss how Bumper.jl works, how it can help you write fast code, and discuss what you need to know to use Bumper.jl safely.

References:
https://github.com/MasonProtter/Bumper.jl
https://en.wikipedia.org/wiki/Region-based_memory_management
https://www.rfleury.com/p/untangling-lifetimes-the-arena-allocator

I'm a PhD Candidate working in theoretical condensed matter physics at the University of Alberta, living in Cologne, Germany. I have a passion for programming, especially when it comes to high-performance code, and metaprogramming in the Julia language.