Re: Get rid of integer divide in FAST_PATH_REL_GROUP() macro

From: Tomas Vondra <tomas(at)vondra(dot)me>
To: David Rowley <dgrowleyml(at)gmail(dot)com>, PostgreSQL Developers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Get rid of integer divide in FAST_PATH_REL_GROUP() macro
Date: 2025-04-26 20:44:00
Message-ID: 1bd4b134-e1a4-4892-90ee-f73481f9bf02@vondra.me
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 4/14/25 04:09, David Rowley wrote:
> 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?
>

Yes, we can get rid of the divide - if we assume power-of-two value
(which seems fine, we already do that, IIRC).

> 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.
>

Thanks. Those changes seem fine to me to.

Do you intend to push these, or do you want me to do it?

regards

--
Tomas Vondra

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tomas Vondra 2025-04-26 21:07:46 Re: pgsql: Add function to get memory context stats for processes
Previous Message Alexander Korotkov 2025-04-26 20:05:27 Re: Removing unneeded self joins