Tom Lane <t...@sss.pgh.pa.us> wrote:

> Antonin Houska <a...@cybertec.at> writes:
> > Antonin Houska <a...@cybertec.at> wrote:
> >> Since palloc() only ensures MAXIMUM_ALIGNOF, that wouldn't help here 
> >> anyway.
> 
> > After some more search I'm not sure about that. The following comment
> > indicates that MAXALIGN helps too:
> 
> Well, there is more than one thing going on here, and more than one
> level of potential optimization.  On just about any hardware I know,
> misalignment below the machine's natural word width is going to cost
> cycles in memcpy (or whatever equivalent the kernel is using).  Intel
> CPUs tend to throw many many transistors at minimizing such costs, but
> that still doesn't make it zero.  On some hardware, you can get further
> speedups with alignment to a bigger-than-word-width boundary, allowing
> memcpy to use specialized instructions (SSE2 stuff on Intel, IIRC).
> But there's a point of diminishing returns there, plus it takes extra
> work and more wasted space to arrange for anything to have extra
> alignment.

Thanks for this summary.

> So we generally only bother with ALIGNOF_BUFFER for shared buffers.

ok, I'll consider this a (reasonable) convention.

-- 
Antonin Houska
Web: https://www.cybertec-postgresql.com


Reply via email to