Re: Optimizing Node Files Support

From: Ranier Vilela <ranier(dot)vf(at)gmail(dot)com>
To: John Naylor <john(dot)naylor(at)enterprisedb(dot)com>
Cc: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Optimizing Node Files Support
Date: 2022-12-02 13:35:58
Message-ID: CAEudQAp0fDc_3ps0F-NAnmOUpH_r08uwYx0YZigi9=cXp72Eww@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi, thanks for reviewing this.

Em sex., 2 de dez. de 2022 às 09:24, John Naylor <
john(dot)naylor(at)enterprisedb(dot)com> escreveu:

>
> On Thu, Dec 1, 2022 at 8:02 PM Ranier Vilela <ranier(dot)vf(at)gmail(dot)com> wrote:
> >
> > Hi,
> >
> > I believe that has room for improving generation node files.
> >
> > The patch attached reduced the size of generated files by 27 kbytes.
> > From 891 kbytes to 864 kbytes.
> >
> > About the patch:
> > 1. Avoid useless attribution when from->field is NULL, once that
> > the new node is palloc0.
> >
> > 2. Avoid useless declaration variable Size, when it is unnecessary.
>
> Not useless -- it prevents a multiple evaluation hazard, which this patch
> introduces.
>
It's doubting, that patch introduces some hazard here.
But I think that casting size_t (typedef Size) to size_t is worse and is
unnecessary.
Adjusted in the v1 patch.

> > 3. Optimize comparison functions like memcmp and strcmp, using
> > a short-cut comparison of the first element.
>
> Not sure if the juice is worth the squeeze. Profiling would tell.
>
This is a cheaper test and IMO can really optimize, avoiding a function
call.

> > 4. Switch several copy attributions like COPY_SCALAR_FIELD or
> COPY_LOCATION_FIELD
> > by one memcpy call.
>
> My first thought is, it would cause code churn.
>
It's a weak argument.
Reduced 27k from source code, really worth it.

> > 5. Avoid useless attribution, ignoring the result of pg_strtok when it
> is unnecessary.
>
> Looks worse.
>
Better to inform the compiler that we really don't need the result.

regards,
Ranier Vilela

Attachment Content-Type Size
v1-optimize_gen_nodes_support.patch application/octet-stream 12.4 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2022-12-02 14:07:54 Re: initdb: Refactor PG_CMD_PUTS loops
Previous Message David G. Johnston 2022-12-02 13:29:42 Re: Optimize common expressions in projection evaluation