[fpc-devel] Aligned dynamic arrays
Marco van de Voort
fpc at pascalprogramming.org
Fri Mar 29 23:02:19 CET 2019
Op 3/28/2019 om 11:40 PM schreef Anthony Walter:
> Here is a brief follow up. I am working on other projects at the
> moment, but I am confident this a simple solution. Please tell me if
> this somehow will not fit you needs.
My needs are simple:
- auto clean like dynamic arrays.
- preferably transparent with all existing mechanisms.
- performance is important so no getters and setters (the units are
pixels, and getters and setters in such cases slow down too much).
- I mostly align for SSE/AVX not DMA, so my alignment is typically
64byte, I'd rather not use special functions that don't allocate via the
pascal suballocator, that would only
increase fragmentation
However currently I have stowed the alignment requirement away in a few
classes which are manually specialized versions of a generic one for
different pixel size derive/specialize (*), so while I'm an alignment user,
I'm not the best motivation to pull it in language.
(*) 8-bit grayscale and 24-bit RGB have manually specialized classes,
the rest uses an generic, which optimizes not as well in Delphi, but
good enough for all but the most extreme speed. The 24-bit RGB case is
also due to bugs in older (<=XE6) Delphis that
don't deal well with pointer math of 3-byte types.
More information about the fpc-devel
mailing list