Re: Optimizing Node Files Support

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: vignesh C <vignesh21(at)gmail(dot)com>
Cc: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>, John Naylor <john(dot)naylor(at)enterprisedb(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Optimizing Node Files Support
Date: 2023-01-04 22:39:48
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

vignesh C <vignesh21(at)gmail(dot)com> writes:
> The patch does not apply on top of HEAD as in [1], please post a rebased patch:

Yeah. The way that I'd been thinking of optimizing the copy functions
was more or less as attached: continue to write all the COPY_SCALAR_FIELD
macro calls, but just make them expand to no-ops after an initial memcpy
of the whole node. This preserves flexibility to do something else while
still getting the benefit of substituting memcpy for retail field copies.
Having said that, I'm not very sure it's worth doing, because I do not
see any major reduction in code size:

text data bss dec hex filename
53601 0 0 53601 d161 copyfuncs.o
text data bss dec hex filename
49850 0 0 49850 c2ba copyfuncs.o

I've not looked at the generated assembly code, but I suspect that
my compiler is converting the memcpy's into inlined code that's
hardly any smaller than field-by-field assignment. Also, it's
rather debatable that it'd be faster, especially for node types
that are mostly pointer fields, where the memcpy is going to be
largely wasted effort.

I tend to agree with John that the rest of the changes proposed
in the v1 patch are not useful improvements, especially with
no evidence offered that they'd make the code smaller or faster.

regards, tom lane

Attachment Content-Type Size
v2-optimize_gen_nodes_support.patch text/x-diff 2.6 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2023-01-04 22:47:31 Re: Is RecoveryConflictInterrupt() entirely safe in a signal handler?
Previous Message Andrew Dunstan 2023-01-04 22:33:50 Re: Add a test to ldapbindpasswd