mirror of
https://github.com/postgres/postgres.git
synced 2025-10-21 02:52:47 +03:00
Various micro-optimizations for GetSnapshopData().
Heikki Linnakangas had the idea of rearranging GetSnapshotData to avoid checking for sub-XIDs when no top-level XID is present. This patch does that plus further a bit of further, related rearrangement. Benchmarking show a significant improvement on unlogged tables at higher concurrency levels, and mostly indifferent result on permanent tables (which are presumably bottlenecked elsewhere). Most of the benefit seems to come from using the new NormalTransactionIdPrecedes() macro rather than the function call TransactionIdPrecedes().
This commit is contained in:
@@ -58,6 +58,10 @@
|
||||
(dest)--; \
|
||||
} while ((dest) < FirstNormalTransactionId)
|
||||
|
||||
/* compare two XIDs already known to be normal; this is a macro for speed */
|
||||
#define NormalTransactionIdPrecedes(id1, id2) \
|
||||
(AssertMacro(TransactionIdIsNormal(id1) && TransactionIdIsNormal(id2)), \
|
||||
(int32) ((id1) - (id2)) < 0)
|
||||
|
||||
/* ----------
|
||||
* Object ID (OID) zero is InvalidOid.
|
||||
|
Reference in New Issue
Block a user