Re: Large writable variables

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

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org, Thomas Munro <thomas.munro@enterprisedb.com>
Date: 2018-10-16T20:36:12Z
Lists: pgsql-hackers
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.

			regards, tom lane


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.