Re:Why is D's garbage collection slower than GO's?
by WalterBright on Saturday October 29, 2022 @06:42AM
(#33382815)
That would all come undone with separate compilation. You'd have to recompile the entire program every time.
You'd also have to keep around a massive amount of data at compile time. A variable that's a pointer to a struct, can't just be represented as a pointer to a struct. It'd have to have a map of which pointers in the struct are managed for every pointer to that struct.
The way the D compiler is implemented now, a struct S has only one instance, as every pointer to a struct's type points to that same instance. And still sometimes people compile programs so large the compiler runs out of memory.
Re:Why is D's garbage collection slower than GO's?
by moonchild on Saturday October 29, 2022 @06:46AM
(#33382838)
You were complaining about 1% performance deltas else-thread—anyone remotely serious about performance is using LTO.
Re:Why is D's garbage collection slower than GO's?
by z3c0 on Saturday October 29, 2022 @08:57AM
(#33383655)
If you were going to debate in a public forum, you should have anticipated some pedantic loser like myself coming along and pointing out your No True Scotsman fallacy.
Re:Why is D's garbage collection slower than GO's?
by simplotek on Saturday October 29, 2022 @09:39AM
(#33383955)
> You were complaining about 1% performance deltas else-thread (...)
You should revisit that corner of the thread to revive your memory. The discussion was about adding an extra 1% performance penalty for reasons, not the importance of a 1% delta either way.
I don't see why. A small amount of manual tagging for extern(C) things—done in this case as part of the standard library, so opaque to user code—will go a long way in that regard. And in any custom allocator, automatic inference should work just fine, since the data returned will be clearly derived from the already-tagged malloc/mmap/VirtuallAlloc/whatever (type info does still have to be associated manually, of course, as part of the GC.addRange dance, to avoid spurious pinning).