bearophile wrote:
Jeremie Pelletier:
I forked the original D1 gc and rewrote it almost entirely. I made numerous speed
improvements over it, such as greatly reducing the number of pool lookups, smarter
alloc/realloc algorithms, removed the 'freebits' and 'scan' bitfields from pools
and rewrote the garbage collector to only use the 'mark' one, I also merged the
sweep and freelist rebuild phases together to save on the overhead of yet another
loop over the entire working set, also added support for the gc to free memory
pools if they're entirely free.<
That looks like lot of work. Too bad we don't have a suite of GC-heavy
benchmarks to test it. (Maybe Lucarella has collected something in the
meantime).
Bye,
bearophile
I couldn't agree more about the need for a GC benchmark suite, writing
this module involved some of the hardest debugging work I ever did, even
with printfs, memory dumps and windbg.
I do believe it to be stable enough for general usage in its current
state. Its been some time now since I last had any issues with it.
If you come across such a benchmark suite, let me know, I would love to
see how it performs against druntime's GC.
Jeremie