From c906f51c9f80dad905ed2656c663d9ba26642b79 Mon Sep 17 00:00:00 2001 From: Maxim Egorushkin Date: Thu, 24 Aug 2023 03:35:39 +0100 Subject: [PATCH] README updated. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d1c9243..4556f85 100644 --- a/README.md +++ b/README.md @@ -21,12 +21,12 @@ When minimizing latency a good design is not when there is nothing left to add, The main design principle these queues follow is _minimalism_, which results in such design choices as: -* Bare minimum of atomic instructions. -* Explicit contention/false-sharing avoidance. -* Fixed size buffer. +* Bare minimum of atomic instructions. Inlinable by default push and pop functions can hardly be any cheaper in terms of CPU instruction number / L1i cache pressure. +* Explicit contention/false-sharing avoidance for queue and its elements. +* Linear fixed size ring-buffer array. No heap memory allocations after a queue object has constructed. It doesn't get any more CPU L1d or TLB cache friendly than that. * Value semantics. Meaning that the queues make a copy/move upon `push`/`pop`, no reference/pointer to elements in the queue can be obtained. -The impact of each of these small design choices on their own is barely measurable, but their total impact is much greater than a simple sum of the constituents' impacts, aka super-scalar compounding or synergy (a layman's term). The synergy emerging from combining multiple of these small design choices together is what allows CPUs to perform at their peak capacities least impeded. +The impact of each of these small design choices on their own is barely measurable, but their total impact is much greater than a simple sum of the constituents' impacts, aka super-scalar compounding or synergy. The synergy emerging from combining multiple of these small design choices together is what allows CPUs to perform at their peak capacities least impeded. These design choices are also limitations: