Used optimized linear search in more code paths

Michael Paquier <michael@paquier.xyz>

Commit: 14ff44f80c09718d43d853363941457f5468cc03
Author: Michael Paquier <michael@paquier.xyz>
Date: 2022-09-22T00:47:28Z
Releases: 16.0
Used optimized linear search in more code paths

This commit updates two code paths to use pg_lfind32() introduced by
b6ef167 with TransactionId arrays:
- At the end of TransactionIdIsInProgress(), when checking for the case
of still running but overflowed subxids.
- XidIsConcurrent(), when checking for a serializable conflict.

These cases are less impactful than 37a6e5d, but a bit of
micro-benchmarking of this API shows that linear search speeds up by
~20% depending on the number of items involved (x86_64 and amd64 looked
at here).

Author: Nathan Bossart
Reviewed-by: Richard Guo, Michael Paquier
Discussion: https://postgr.es/m/20220901185153.GA783106@nathanxps13

Files

Discussion