why does array appending add a page size instead of doubling ?

monarch_dodra monarchdodra at gmail.com
Sun Feb 3 01:28:22 PST 2013


On Sunday, 3 February 2013 at 08:53:11 UTC, timotheecour wrote:
>> Note that dynamic arrays are generic containers, so they 
>> aren't exactly optimized for anything. You could try that test 
>> with the "made for appending" std.array.appender: It always 
>> tries to extend without reallocating, and only relocates when 
>> the current memory segment is 100% full.
>>
>> Furthermore, when it *does* relocate, it use D-style memmove 
>> without calling postblit. Independent of language, and with 
>> the requirement of contiguous memory, I can't really think of 
>> a scheme that could be better than that...?
>
>
> modified a bit (see below) to include timing etc. I'm on OSX 
> (16GB ram, core i7 2.3GHz).

One more: Did you try using std.container.Array?

Even if appender is more optimized than naked array appending, it 
still has to work with the underlying system. std.container.Array 
should be able to do just as well as vector, or better (D move 
semnantics).


More information about the Digitalmars-d-learn mailing list