Re: embedded list v3

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@2ndquadrant.com>
Cc: pgsql-hackers@postgresql.org, Alvaro Herrera <alvherre@2ndquadrant.com>, Robert Haas <robertmhaas@gmail.com>, Peter Geoghegan <peter@2ndquadrant.com>
Date: 2012-10-01T15:33:01Z
Lists: pgsql-hackers
Andres Freund <andres@2ndquadrant.com> writes:
> On Sunday, September 30, 2012 10:33:28 PM Tom Lane wrote:
>> I'm still pretty desperately unhappy with your insistence on circularly
>> linked dlists. Not only does that make initialization problematic,
>> but now it's not even consistent with slists.

> We literally have tens of thousands list manipulation a second if the server is 
> busy.

Tens of thousands, with maybe 1ns extra per call, adds up to what?

> I am really sorry for being stubborn here, but I changed to circular lists 
> after profiling and finding that pipeline stalls & misprediced branches where
> the major thing I could change. Not sure how we can resolv this :(

I'm going to be stubborn too.  I think you're allowing very small
micro-optimization arguments to contort the design of a fundamental data
structure, in a way that makes it harder to use.  That's not a tradeoff
I like.  Especially when the micro-optimization isn't even uniformly a
win.  I remain of the opinion that the extra cycles spent on iteration
(which are real despite your denials) will outweigh any savings in list
alteration in many use-cases.

			regards, tom lane


Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Provide some static-assertion functionality on all compilers.

  2. Add infrastructure for compile-time assertions about variable types.

  3. Remove 576 references of include files that were not needed.

  4. More include file adjustments.

  5. Allow each C include file to compile on its own by including any needed