Chris Torek wrote:
> You pay (sometimes noticeably) for the GC, but the price is not
> too bad in less time-critical situations. The GC has a few short
> stop-the-world points but since Go 1.6 or so, it's pretty smooth,
> unlike what I remember from 1980s Lisp systems. :-)
I'm guessing those 1980s Lisp systems would also be pretty smooth on
2020s hardware.
I worked on a big system written in Common Lisp at one point, and it used a pretty standard Lispy garbage collector. It spent something like 15% of its time in GC. It was sufficiently bad that we forced a full GC between every query.
The Go garbage collector, on the other hand, is really neat. I believe it reserves something like 25% of available CPU time for itself, but it runs concurrently with your program: having to stop the world for GC is very, very rare in Go programs and even when you have to do it, the concurrent code (which, by the way, can make use of full physical parallelism on multicore systems) has already done much of the heavy lifting, meaning you spend less time in a GC pause. It's a very impressive piece of engineering.
- Dan C.