Em seg., 4 de mar. de 2024 às 03:18, Andrey M. Borodin <x4...@yandex-team.ru>
escreveu:

>
>
> > On 14 Jan 2024, at 18:55, John Naylor <johncnaylo...@gmail.com> wrote:
> >
> > On Sat, Jan 13, 2024 at 9:36 PM Ranier Vilela <ranier...@gmail.com>
> wrote:
> >>
> >> Em ter., 9 de jan. de 2024 às 06:31, John Naylor <
> johncnaylo...@gmail.com> escreveu:
> >
> >>> This just moves an operation from one place to the other, while
> >>> obliterating the explanatory comment, so I don't see an advantage.
> >>
> >> Well, I think that is precisely the case for using memset.
> >> The way initialization is currently done is much slower and harmful to
> the branch.
> >> Of course, the gain should be small, but it is fully justified for
> switching to memset.
> >
> > We haven't seen any evidence or reasoning for that. Simple
> > rules-of-thumb are not enough.
> >
>
> Hi Ranier,
>
> I’ll mark CF entry [0] as “Returned with Feedback”. Feel free to reopen
> item in this CF or submit to the next, if you want to continue working on
> this.
>
> I took a glance into the patch, and I would agree that setting field
> nonzero values with memset() is somewhat unusual. Please provide stronger
> evidence to do so.
>
 I counted the calls with non-zero memset in the entire postgres code and
they are about 183 calls.

I counted the calls with non-zero memset in the entire postgres code and
they are about 183 calls.

At least 4 calls with -1

File contrib\pg_trgm\trgm_op.c:
memset(lastpos, -1, sizeof(int) * len);

File src\backend\executor\execPartition.c:
memset(pd->indexes, -1, sizeof(int) * partdesc->nparts);

File src\backend\partitioning\partprune.c:
memset(subplan_map, -1, nparts * sizeof(int));
memset(subpart_map, -1, nparts * sizeof(int));

Does filling a memory area, one by one, with branches, need strong evidence
to prove that it is better than filling a memory area, all at once, without
branches?

best regards,
Ranier Vilela

Reply via email to