This repository contains benchmarks for various priority queue implementations in Go, Rust, Zig, and C++. All tests are single threaded and designed to try and reproduce roughly the same workload across all implementations. While these benchmarks are not perfect, they should give a rough idea of the performance of each implementation and how they might work in a real-world scenario.
Language | Time Spent (seconds) |
---|---|
RPQ | 1.38 |
RPQ (Batch) | 0.98 |
RPQ (Batch Parallel) | 0.62 |
GPQ | 5.54 |
GPQ (Batch) | 4.83 |
GPQ (Batch Parallel) | 2.98 |
Zig (STD LIB) | 0.87 |
Rust (STD LIB) | 0.72 |
Go (STD LIB) | 3.61 |
C++ (STD LIB) | 4.24 |
Python (STD LIB) | 15.03 |
Feature | GPQ | RPQ | Go Heap | Zig Priority Queue | C++ Queue | Rust Binary Heap |
---|---|---|---|---|---|---|
Enqueue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Dequeue | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Disk Cache | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
Mutable Priority | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
Timeouts | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |