Re: Large writable variables

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Gavin Flower <GavinFlower@archidevsys.co.nz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@enterprisedb.com>
Date: 2018-10-16T20:47:28Z
Lists: pgsql-hackers
Hi,

On 2018-10-17 09:38:18 +1300, Gavin Flower wrote:
> On 17/10/2018 09:36, Tom Lane wrote:
> > Andres Freund <andres@anarazel.de> writes:
> > > Attached is a patch that shrinks fmgr_builtins by 25%. That seems
> > > worthwhile, it's pretty frequently accessed, making it more dense is
> > > helpful.  Unless somebody protests soon, I'm going to apply that...
> > Hah.  I'm pretty sure that struct *was* set up with an eye to padding ...
> > on 32-bit machines.  This does make it shorter on 64-bit, but also
> > makes the size not a power of 2, which might add a few cycles to
> > array indexing calculations.  Might be worth checking whether that's
> > going to be an issue anywhere.
> > 
> > What's the point of the extra const decoration on funcName?  ISTM
> > the whole struct should be const, or not.

> Would it be useful to add dummy variable(s) to bring it up to a power of 2?

Err. Reread what we're talking about. The point was to reduce the size,
it's a power of two right now (32).  We could of course also just do
nothing (re-add a dummy variable), which would, drumroll, do nothing.

Greetings,

Andres Freund


Commits

  1. Apply unconstify() in more places

  2. Improve unconstify() documentation

  3. Drop const cast from dlsym() calls

  4. Const-ify a few more large static tables.

  5. Improve tzparse's handling of TZDEFRULES ("posixrules") zone data.

  6. Avoid statically allocating statement cache in ecpglib/prepare.c.

  7. Reorder FmgrBuiltin members, saving 25% in size.

  8. Add macro to cast away const without allowing changes to underlying type.

  9. Mark constantly allocated dest receiver as const.

  10. Avoid statically allocating formatting.c's format string caches.

  11. Correct constness of system attributes in heap.c & prerequisites.

  12. Avoid statically allocating gmtsub()'s timezone workspace.

  13. Correct constness of a few variables.

  14. Move the replication lag tracker into heap memory.