我最近看了两个非常有趣且具有教育意义的语言讲座:
Herb Sutter撰写的第一篇文章介绍了C ++ 0x的所有出色功能,凉爽的功能,为什么C ++的未来似乎比以往更加光明,以及M $在这场比赛中如何被称为好人。讨论围绕效率以及如何经常减少堆活动来提高性能。
另一位由Andrei Alexandrescu创作,激发了从C / C ++到他的新游戏改变者D的过渡。D的大多数工作似乎都动机和设计都很好。但是,令我感到惊讶的是,D推动了垃圾回收,并且所有类都是仅通过引用创建的。更令人困惑的是,《 D编程语言参考手册》一书在有关资源管理的章节中特别 指出以下内容:
垃圾回收消除了C和C ++中必需的繁琐且易于出错的内存分配跟踪代码。这不仅意味着更快的开发时间和更低的维护成本,而且生成的程序经常运行得更快!
这与Sutter关于减少堆活动的不断讨论相矛盾。我非常尊重Sutter和Alexandrescou的见解,因此我对这两个关键问题感到困惑
并非仅通过引用创建类实例会导致大量不必要的堆活动吗?
在哪些情况下可以使用垃圾回收而不牺牲运行时性能?