I'm going through some code and thinking of ways to reduce GC pressure, and came across a bit that needed to append some items to an array:
T[] args; lex.expect("("); args ~= parseSingleItem(lex); while (!lex.empty) { lex.expect(","); args ~= parseSingleItem(lex); } lex.expect(")"); return computeResult(args); Now obviously, in the general case (with arbitrarily many number of items) some GC allocations will be needed, but the most common use-cases are actually only 1 or 2 items each time. Allocating lots of small arrays seem to be rather wasteful, so I thought to use a static array as a buffer instead. The question is, is there a way to take a slice of the static array, set the length to zero, and append to it with ~= such that when it runs out of space in the static buffer, it will reallocate a longer array on the GC heap? Or is this a bad idea? T -- Without geometry, life would be pointless. -- VS