The "no gc" crowd

Peter Alexander peter.alexander.au at gmail.com
Tue Oct 8 15:02:06 PDT 2013


On Tuesday, 8 October 2013 at 20:44:55 UTC, Dicebot wrote:
> On Tuesday, 8 October 2013 at 19:38:22 UTC, Peter Alexander 
> wrote:
>> Making sure your code doesn't allocate isn't that difficult.
>
> What would you use for that? It is not difficult, it is 
> unnecessary (and considerably) time-consuming.

Just learn where allocations occur and avoid them during 
development. This leaves you only with accidental or otherwise 
unexpected allocations.

For the accidental allocations, these will come up during 
profiling (which is done anyway in a performance sensitive 
program). The profiler gives you the call stack so these are 
trivial to spot and remove. There are also several other ways to 
spot allocations (modify druntime to log on allocation, set a 
breakpoint in the GC using a debugger, etc.) although I don't do 
these.

You say it is time consuming. In my experience it isn't. General 
profiling and performance tuning are more time consuming.

You may argue that profiling won't always catch accidental 
allocations due to test coverage. This is true, but then @nogc is 
only a partial fix to this anyway. It will catch GC allocations, 
but what about accidental calls to malloc, mmap, or maybe an 
accidental IO call due to some logging you forgot to remove. GC 
allocations are just one class of performance problems, there are 
many more and I hope we don't have to add attributes for them all.


More information about the Digitalmars-d mailing list