On Tuesday, 6 December 2016 at 15:29:59 UTC, Jonathan M Davis
wrote:
On Tuesday, December 06, 2016 13:19:22 Anonymouse via
Digitalmars-d-learn wrote:
On Tuesday, 6 December 2016 at 10:52:44 UTC, thedeemon wrote:
[...]
> 2. Up until 4 KB it reallocates when growing, but after 4 KB
> the array lives in a larger pool of memory where it can
> often grow a lot without reallocating, so in many scenarios
> where other allocations do not interfere, the data array of
> appender grows in place without copying any data, thanks to
> GC.extend() method.
I always assumed it kept its own manually allocated array on a
malloc heap :O
No. The main thing that Appender does is reduce the number of
checks required for whether there's room for the array to
append in place, because that check is a good chunk of why ~=
is expensive for arrays.
[...]
Thanks everyone for the explanations. I should probably look into
my data and see how often I'm reaching the 4kb size triggering
GC.extend() use.
--Jon