aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/jobqueue.cpp
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-04-20 21:22:01 +0200
committerGitHub Enterprise <[email protected]>2026-04-20 21:22:01 +0200
commit29736c4fed154233a8adbf93b29995c8e0b3ea78 (patch)
tree191dc746745e12904fff58beb45ed89aff1601fb /src/zencore/jobqueue.cpp
parents3 dehydration touch cas (#977) (diff)
downloadarchived-zen-29736c4fed154233a8adbf93b29995c8e0b3ea78.tar.xz
archived-zen-29736c4fed154233a8adbf93b29995c8e0b3ea78.zip
Use eastl::deque for queues with many small elements (#991)
Switch several deque-based queues from `std::deque` to `eastl::deque` to reduce per-element heap allocation overhead. MSVC's `std::deque` allocates one node per element for anything larger than ~16 bytes; `eastl::deque` groups 4, 8, or 32 elements per block depending on element size. Converted call sites: - `BlockingQueue` and `WorkerThreadPool` (generic — downstream callers benefit automatically) - Session log entry buffer (~10k-entry ring of large log records — 4 per block vs 1) - Job queue (`Ref<Job>` — 32 per block vs 2) - RPC recording request queue (large `QueuedRequest` struct — 4 per block vs 1) - StatsD client message queues (~32-byte buffers — 8 per block vs 1)
Diffstat (limited to 'src/zencore/jobqueue.cpp')
-rw-r--r--src/zencore/jobqueue.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp
index a5a82717d..40e4e2162 100644
--- a/src/zencore/jobqueue.cpp
+++ b/src/zencore/jobqueue.cpp
@@ -12,10 +12,9 @@
#endif // ZEN_WITH_TESTS
ZEN_THIRD_PARTY_INCLUDES_START
+#include <EASTL/deque.h>
#include <gsl/gsl-lite.hpp>
ZEN_THIRD_PARTY_INCLUDES_END
-
-#include <deque>
#include <thread>
#include <unordered_map>
@@ -342,7 +341,7 @@ public:
std::atomic_bool InitializedFlag = false;
RwLock QueueLock;
- std::deque<Ref<Job>> QueuedJobs;
+ eastl::deque<Ref<Job>> QueuedJobs;
std::unordered_map<uint64_t, Ref<Job>> RunningJobs;
std::unordered_map<uint64_t, Ref<Job>> CompletedJobs;
std::unordered_map<uint64_t, Ref<Job>> AbortedJobs;