jef*_*yer 20 c++ garbage-collection raii
在什么情况下垃圾收集比手动内存管理更有效?(这里的手册可能意味着在C中使用malloc和free,或者使用C++推广的更清晰的RAII和智能指针技术)
我喜欢垃圾收集如何通过编写软件来消除一些偶然的复杂性,但我更加高兴RAII和智能指针如何消除这种复杂性,同时还可以处理除内存以外的资源,确定性,提供性能保证和更高效总体.所以我想我可以安全地忽略垃圾收集.但是,我注意到人们一直在说垃圾收集比C++中使用的紧密资源管理更快,例如当有大量额外内存可用时.
那么什么时候垃圾收集完全可以胜过手动内存管理呢?我喜欢RAII和智能指针,但如果速度更快,我很乐意接受垃圾收集作为另一种工具.
MSa*_*ers 12
从来没有,我可以证明这一点.
首先,让我们假设我们在任何一种情况下都使用最好的算法.使用次优算法可以证明任何事情.
其次,让我们假设最好的GC算法使用时间T0...Tn来决定是否i应该在某个时刻释放内存分配.那总是?(Ti)
现在,存在使用相同GC算法的等效手动内存管理算法,但仅考虑已手动标记为已释放的内存块.因此,运行时间是?(?iTi)(当块i没有被释放时δi= 0,当它被释放时= 1).
显然,?(?iTi) ? ?(Ti)有一种手动算法严格地不比GC算法差.
这与其他答案形成鲜明对比?
Han*_*ant 11
GC优势:
GC缺点:
对于perf来说,这是一个灌篮,GC不费力地轻松击败堆分配器.Rico Mariani和Raymond Chen之间的汉语词典编程比赛经常引用,概述就在这里.雷蒙德的C++程序最终赢了,但只是在重写了几次并放弃了标准的C++库之后.
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |