|
|
|
|
|
by titzer
3541 days ago
|
|
> If using a GC we know when they will occur, but do not know when they will be freed. Which means that at some indeterminate point in the future there will be a large temporary slowdown due to processing the GC. This just isn't true anymore. Incremental collectors can achieve pause times in the single-digit millisecond range, and concurrent collectors can achieve pause times in the single-digit to tens of microseconds range, even for super-high-allocation rate programs. There are even real-time collectors suitable for audio and other hard real-time applications. Azul GC (a high performance concurrent compacting collector): https://www.azul.com/products/zing/pgc/ Metronome (a real-time GC with guaranteed maximum pause times): http://researcher.watson.ibm.com/researcher/view_group_subpa... GC scheduling in V8 (hides GC pause times between frames, reducing animation jank): http://queue.acm.org/detail.cfm?id=2977741 The Go GC ships now with a very low-latency GC: https://blog.golang.org/go15gc |
|
Single digit milliseconds is millions of instructions, which /is/ a large slowdown in some applications.