这个问题听起来可能相当简单,但这是我与另一位合作的开发人员进行的辩论。
我小心翼翼地在可能的地方进行堆栈分配,而不是堆分配它们。他一边跟我说话,一边看着我,并评论说没有必要,因为他们的表现是一样的。
我总是有这样的印象:堆栈的增长是恒定的时间,堆分配的性能取决于堆当前分配(找到合适大小的洞)和解除分配(折叠洞以减少碎片)的复杂性,如如果我没有记错的话,许多标准库实现在删除期间需要时间来执行此操作)。
我觉得这可能非常依赖于编译器。对于这个项目,我特别使用地铁工厂 http://en.wikipedia.org/wiki/Metrowerks编译器为PPC http://en.wikipedia.org/wiki/PowerPC建筑学。深入了解这种组合将是最有帮助的,但一般来说,对于 GCC 和 MSVC++ 来说,情况如何?堆分配的性能不如堆栈分配吗?有没有区别?或者差异如此之小以至于变得毫无意义的微观优化。
堆栈分配速度要快得多,因为它实际上所做的只是移动堆栈指针。
使用内存池,您可以从堆分配中获得相当的性能,但这会稍微增加复杂性并带来一些麻烦。
此外,堆栈与堆不仅是性能考虑因素,也是性能考虑因素。它还告诉您很多有关对象的预期寿命的信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)