On Thursday, 20 May 2021 at 16:33:09 UTC, IGotD- wrote:
> On Thursday, 20 May 2021 at 15:28:52 UTC, Paulo Pinto wrote:
> Contrary to popular belief ARC implementations are quite lousy.
Good in theory, not so much when placed in benchmarks, but I guess Apple's marketing helps selling the pivot regarding Objective-C GC failure.
https://github.com/ixy-languages/ixy-languages
To the point that in all these years Microsoft never bothered to try that in any of their C++ COM/UWP aware implementations.
Also there isn't a single C++ compiler that does such optimizations to their smart pointer classes.
Compared to what?
So a tracing GC is faster and as RAM increases what happens to the time spent scanning? Reference counting has a performance impact which is known. The reference counting in Nim has been a success a provided in general better performance than the tracing ones (something Nim can easily do as you can just swap them out). Because of the RC is now the default GC type in Nim. RC has also a known performance impact that is spread through out the execution. Loops can be optimized so that any inc/dec can be avoided.
Rust has interesting take on RC as move is the default. There is no inc/dec on a move and neither when borrowing (you borrow the inner type). It's kind of a natural optimization because of this. Because of this I would rather see a move by default by type in D.
Looking forward to the Nim RC beating these benchmarks.
https://devblogs.microsoft.com/aspnet/grpc-performance-improvements-in-net-5/
https://www.techempower.com/benchmarks/
And it isn't as if Nim has a community that much greater than D currently has.
Rust doesn't have RC, just library types, Arc/RC everywhere is just as slow as shared_ptr everywhere.
In fact, the way that Apple got around improving ARC wasn't spending more development resources on their Objective-C/Swift compilers, rather develop a complete new CPU.
Now iDevices have turned into Swift/Objective-C machines.
https://blog.metaobject.com/2020/11/m1-memory-and-performance.html