Why I Like D

Paulo Pinto pjmlp at progtools.org
Thu Jan 13 15:18:57 UTC 2022


On Thursday, 13 January 2022 at 10:21:12 UTC, Stanislav Blinov 
wrote:
> On Wednesday, 12 January 2022 at 16:17:02 UTC, H. S. Teoh wrote:
>> [...]
>
> Oh there is a psychological barrier for sure. On both sides of 
> the, uh, "argument". I've said this before but I can repeat it 
> again: time it. 4 milliseconds. That's how long a single 
> GC.collect() takes on my machine. That's a quarter of a frame. 
> And that's a dry run. Doesn't matter if you can GC.disable or 
> not, eventually you'll have to collect, so you're paying that 
> cost (more, actually, since that's not going to be a dry run). 
> If you can afford that - you can befriend the GC. If not - GC 
> goes out the window.
>
> In other words, it's only acceptable if you have natural pauses 
> (loading screens, transitions, etc.) with limited resource 
> consumption between them OR if you can afford to e.g. halve 
> your FPS for a while. The alternative is to collect every 
> frame, which means sacrificing a quarter of runtime. No, thanks.
>
> Thing is, "limited resource consumption" means you're 
> preallocating anyway, at which point one has to question why 
> use the GC in the first place. The majority of garbage created 
> per frame can be trivially allocated from an arena and 
> "deallocated" in one `mov` instruction (or a few of them). And 
> things that can't be allocated in an arena, i.e. things with 
> destructors - you *can't* reliably delegate to the GC anyway - 
> which means your persistent state is more likely to be manually 
> managed.
>
> TLDR: it's pointless to lament on irrelevant trivia. Time it! 
> Any counter-arguments from either side are pointless without 
> that.

You collect it when it matters less, like loading a level, some 
of them take so long that people even have written mini-games 
that play during loading scenes, they won't notice a couple of ms 
more.

Hardly any different from having an arena throw away the whole 
set of frame data during loading.

Unless we start talking about DirectStorage and similar.



More information about the Digitalmars-d-announce mailing list