Get rid of integer divide in FAST_PATH_REL_GROUP() macro
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>,
Tomas Vondra <tomas@vondra.me>
Date: 2025-04-14T02:09:16Z
Lists: pgsql-hackers
Attachments
- v1-0001-Eliminate-integer-divide-in-fastpath-locking-code.patch (application/octet-stream) patch v1-0001
I noticed a while ago that the new fast-path locking code uses integer division to figure out the fast-path locking group slot. To me, this seems a bit unnecessary as FastPathLockGroupsPerBackend is always a power-of-two value, so we can use bitwise-AND instead. I don't think FAST_PATH_REL_GROUP() is in any particularly hot code paths, but still, having the divide in there isn't sitting well with me. Can we get rid of it? I've attached a patch for that. I also adjusted the method used to calculate FastPathLockGroupsPerBackend. Also, the Assert that was going on at the end of the loop in InitializeFastPathLocks() looked a little odd as it seems to be verifying something that the loop condition was checking already. I thought it was better to check that we end up with a power-of-two. Please see the attached patch. David
Commits
-
Eliminate divide in new fast-path locking code
- 936457419d79 18.0 landed