2 ms·
Because (mainstream) refcounting GCs are just slower than modern tracing GCs. GC pauses are virtually gone these days (Java gives you <1ms maximum pause for hea
by pron 5y ago
Because (mainstream) refcounting GCs are just slower than modern tracing GCs. GC pauses are virtually gone these days (Java gives you <1ms maximum pause for heaps up to 16TB), and are actually more deterministic than refcounting.
- vanviegen 5y agoRC can be deterministic in terms of when a destructor gets called. GC languages usually don't support destructors for that reason.
- pron 5y agoBut RC GC is not deterministic, though. All you know is that it will be called when some reference is cleared. You don't know which and when, and you don't know how much work it will do. With modern tracing GCs, though, there are no more pauses, and mostly a constant and small CPU tax, done in the background. The only significant cost tracing has these days is in memory footprint.
- mwcampbell 5y ago> The only significant cost tracing has these days is in memory footprint. And that's not insignificant. The top-of-the-line Pixel 6 Pro has twice as much RAM as the top-of-the-line iPhone 13 Pro. Maybe the Android camp is just more eager to play the specs game, but I've long speculated that iOS simply needs less RAM because of its refusal to use tracing GC.
- pjmlp 5y agoWindows Phones of the Lumia series had historically less RAM than equally priced Android models and the performance with .NET Native was much better. I used all my models until their hardware died.
- pixelpoet 5y agoHow can there be degrees of determinism?
- coldtea 5y agoDeterminism in programming doesn't just mean "X was caused by Y" (e.g. determinism as a stand-in for the causual chain). It mostly means "I can know (as in "determine") how much time, or instructions, or calls, or memory an operation will take". And this knowledge can come in degrees (be more or less fuzzy).
- pron 5y agoI can tell you I'll come fix your plumbing between 10:00 and 14:00, and it will take between 30 minutes and two hours, or that I'll make a delivery at 9:45.