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

Reply via email to