On Sunday, 7 February 2016 at 02:46:39 UTC, Marco Leise wrote:
My code would not see much ref counting in performance critical loops. There is no point in ref counting every single point in a complex 3D scene. I could imagine it used on bigger items. Textures for example since they may be used by several objects. Or - a prime example - any outside resource that is potentially scarce and benefits from deterministic release: file handles, audio buffers, widgets, ...
In my experience most such resources don't need reference counting. Yes, Textures if you load dynamically, but if you load Textures before entering the render loop... not so much and it should really be a caching system so you don't have to reload the texture right after freeing it. File handles are better done as single borrow from owner, or pass by reference, you don't want multiple locations to write to the same file handle, audio buffers should be preallocated as they cannot be deallocated cheaply on the real time thread, widgets benefit more from weak-pointers/back-pointers-to-borrowers as they tend to have a single owning parent...
What would be better is to build better generic static analysis and optimization into the compiler. So that the compiler can deduce that an integer is never read except when decremented, and therefore can elide inc/dec pairs.