Designing Fast and Efficient List-like Data Structures - Yannic Bonenberger - CppCon 2023

Design innovative list-like data structures that leverage contiguous memory to achieve fast and efficient performance, with techniques such as atomic updates, custom allocators, and cache-friendly design.

Key takeaways
  • List-like data structures can be designed to be fast and efficient by packing elements into contiguous memory.
  • Atomically updating pointers to eliminate cache invalidation can improve performance.
  • A custom allocator can be used to store elements in contiguous memory, reducing memory overhead.
  • A fixed stack can be used to eliminate the need for dynamic memory allocation.
  • List structures can be designed to be cache-friendly by using a single array for storage.
  • Elements can be accessed in constant time by using a single array and pointer arithmetic.
  • A task queue can be implemented using a custom allocator and a thread-safe queue.
  • A page list can be used to store elements in contiguous memory, allowing for efficient insertion and removal.
  • Cache lines can be used to improve performance by storing multiple elements in a single cache line.
  • A custom allocator can be used to store elements in contiguous memory, reducing memory overhead.
  • A slot can be used to store elements in contiguous memory, eliminating the need for individual nodes.
  • A stimulation queue can be used to store elements in contiguous memory, allowing for efficient insertion and removal.
  • A DAG (Directed Acyclic Graph) can be used to store elements in contiguous memory, allowing for efficient insertion and removal.
  • A linked list can be used to store elements in contiguous memory, allowing for efficient insertion and removal.
  • A stack can be used to store elements in contiguous memory, allowing for efficient insertion and removal.
  • A task queue can be used to store tasks in contiguous memory, allowing for efficient execution.
  • A DAG can be used to store tasks in contiguous memory, allowing for efficient execution.
  • A linked list can be used to store tasks in contiguous memory, allowing for efficient execution.