On Friday, 24 April 2015 at 01:54:11 UTC, Walter Bright wrote:
On 4/23/2015 3:11 PM, deadalnix wrote:
For arbitrary large, you can always do something like :
Item* itemPtr = (arbitrarylarge < thresold)
? alloca(arbitrarylarge)
: GC.alloc(arbitrarylarge);
One extra check compared to a heap allocation is not going to
make things
terrible, and it is likely to be very predictible anyway (most
arbitrarylarge
size are actually small in practice).
You can, but it just doesn't pay off. Even if you found a case
that did, it doesn't mean it pays off in general, and so would
be poor advice.
BTW, since alloca() doesn't survive function scope, might as
well use malloc/free instead of the GC. Or do like I've done
and have an array of preallocated larger buffers.
I.e. if you've gotten to tuning code at this level, the
compiler picking things automatically for you is unlikely to be
helpful. Hence my not being convinced by bearophile's
assessment.
Except of course that alloca is a lot cheaper than malloc/free.