On 12/29/13 12:47 PM, "Ola Fosheim Grøstad"
<ola.fosheim.grostad+dl...@gmail.com>" wrote:
On Sunday, 29 December 2013 at 20:36:27 UTC, Walter Bright wrote:
I'll reiterate that the GC will NEVER EVER pause your program unless
you are actually calling the GC to allocate memory. A loop that does
not GC allocate WILL NEVER PAUSE.
That's fine, except when you have real-time threads.
So unless you use non-temporal load/save in your GC traversal (e.g. on
x86 you have SSE instructions that bypass the cache), your GC might
trash the cache for other cores that run real-time threads which are
initiated as call-backs from the OS.
These callbacks might happen 120+ times per seconds and your runtime
cannot control those, they have the highest user-level priority.
Granted, the latest CPUs have a fair amount of level 3 cache, and the
most expensive ones might have a big level 4 cache, but I still think it
is a concern. Level 1 and 2 caches are small: 64KB/128KB.
I think you and others are talking about different things. Walter was
referring about never invoking GC collection, not the performance of the
GC process once in progress.
Andrei