On Monday, 14 September 2015 at 00:41:28 UTC, Jonathan M Davis wrote:
stop-the-world GC. For instance, this has come up in discussions on games where a certain framerate needs to be maintained. Even a 100 ms stop would be way too much for them. In fact, it came up with the concurrent GC that was presented at dconf 2013 that it would likely have to be guaranteed to stop the world for less than 10 ms (or something in that range anyway) to be acceptable for such environments. So, it _is_ a problem for some folks.

In the renderloop you only have 15 ms, so it would be more like 2ms (not realistic). The 10 ms target is for high performance servers and regular interactive applications.

That being said, it is _not_ a problem for most folks, and the folks who have those sorts of performance requirements frequently can't even use malloc after the program has gotten past its startup phase.

I don't agree with this. You can use your own allocators that don't syscall in critical areas.

GC-allocated or malloced. For instance, as I understand it, Warp used the GC, but it allocated everything up front and didn't allocate once it got going, so the GC wasn't a performance problem for it at all, and it's _very_ fast.

A c preprocessor is a simple program that has to allocate for macro defs, but the rest can just use static buffers... So it should not be a problem.

Regardless, idiomatic D involves a lot more stack allocations than you often get even in C++, so GC usage tends to be low in

Really? I use VLAs in my C++ (a C extension) and use very few mallocs after init. In C++ even exceptions can be put outside the heap. Just avoid STL after init and you're good.


Reply via email to