A Traversable Fixed Size Small Object Allocator in C++
Christian Schuessler, Roland Gruber

TL;DR
This paper introduces a new fixed-size small object allocator in C++ that improves performance for small object management, especially in multi-threaded environments, with a lightweight traversal structure.
Contribution
It presents a novel lock-free memory allocator for small objects with an integrated traversal structure that uses less memory and offers comparable performance.
Findings
Outperforms standard allocators for large numbers of small objects.
Achieves lock-free synchronization without machine instructions.
Uses less memory than STL containers with similar time performance.
Abstract
At the allocation and deallocation of small objects with fixed size, the standard allocator of the runtime system has commonly a worse time performance compared to allocators adapted for a special application field. We propose a memory allocator, originally developed for mesh primitives but also usable for any other small equally sized objects. For a large amount of objects it leads to better results than allocating data with the C ++new instruction and behaves nowhere worse. The proposed synchronization approach for this allocator behaves lock-free in practical scenarios without using machine instructions, such as compare-and-swap. A traversal structure is integrated requiring less memory than using containers such as STL-vectors or lists, but with comparable time performance.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Distributed and Parallel Computing Systems · Logic, programming, and type systems
