Garbage collection, and practical strategies to avoid allocation
Adam D. Ruppe
destructionator at gmail.com
Fri May 31 19:16:01 PDT 2013
just to toss in my quick thoughts, I wrote a couple comments on
the recent reddit thread about using D with a minimal runtime and
some of the talk may be relevant here too:
http://www.reddit.com/r/programming/comments/1fc9jt/dmd_2063_the_d_programming_language_reference/ca94mek
Some little things we could do is add overloads to some functions
that return string to be able to take a buffer argument too.
string to(T:string)(int a) { char[] buf = new char[](16); return
assumeUnique(to(a, buffer));
char[] to(int a, char[] buffer) { deposit it straight into
buffer, return the slice into buffer that is actually used; }
and so on for all kinds of functions. Kinda a pain in the butt
but when you need it, you have the second variant, and if you
don't care, the convenient first one is still available (also
avoids breaking code!)
I also mentioned on irc yesterday that I think a good, low cost
idea to help find allocations is to add a global flag to druntime
that makes gc_malloc throw an Error. Then you can set this flag
in a critical section of code and at least get a runtime notice
of a missed allocation in testing while still having the gc for
the rest of the app.
Another member also suggested you can do that easily enough by
running the program in a debugger and setting a breakpoint at
gc_malloc, but I think the flag would be simpler yet.
More information about the Digitalmars-d
mailing list