Re: [HACKERS] Fix performance of generic atomics - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [HACKERS] Fix performance of generic atomics
Date
Msg-id 1054.1504726449@sss.pgh.pa.us
Whole thread Raw
In response to Re: [HACKERS] Fix performance of generic atomics  (Andres Freund <andres@anarazel.de>)
Responses Re: [HACKERS] Fix performance of generic atomics  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
> On 2017-09-06 15:25:20 -0400, Tom Lane wrote:
>> I think we can just use "old = ptr->value" to set up for the cmpxchg
>> loop in every generic.h function that uses such a loop.

> I think we might have been talking past each other - I thought you were
> talking about changing the pg_atomic_read_u64_impl implementation for
> external users.

Ah.  I was not thinking of touching pg_atomic_read_u32/u64_impl,
although now that you mention it, it's not clear to me why we
couldn't simplify

-    return *(&ptr->value);
+    return ptr->value;

AFAIK, the compiler is entitled to, and does, simplify away that
take-a-pointer-and-immediately-dereference-it dance.  If it did
not, a whole lot of standard array locutions would be much less
efficient than they should be.  What matters here is the volatile
qualifier, which we've already got.
        regards, tom lane



pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: [HACKERS] why not parallel seq scan for slow functions
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] why not parallel seq scan for slow functions