On 12/21/2016 3:36 AM, thedeemon wrote:
Bad news: without complete redesign of the language and turning into one more
C++/CLI (where you have different kinds of pointers in the language for GC and
non-GC), having C performance and Go-style low-pause GC is not really possible.
You have to choose one. Go chose GC with short pauses but paid with slow speed
overall and slow C interop. D chose C-level performance but paid for it with a
slow GC.

The trouble with a better GC is it usually entails changing the code generator to emit a "write gate" that goes along with assignments via a pointer. This write gate signals the GC that a particular block is being written to, so that block can be marked as "dirty". (Paging virtual memory systems do this automatically.)

What this implies is better GC performance comes at a cost of worse performance of the non-GC code. This strategy is effective for a language that makes very heavy use of the GC (like Java does), but for a language like D that uses the GC lightly, it's a much more elusive benefit.

Reply via email to