gpt4 book ai didi

c++ - 哪个更快 : Stack allocation or Heap allocation

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:57 24 4
gpt4 key购买 nike

这个问题听起来可能相当初级,但这是我与另一位合作开发人员的辩论。

我注意在可能的地方分配堆栈,而不是堆分配它们。他在和我说话并看着我的肩膀并评论说没有必要,因为他们在表现方面是一样的。

我一直认为堆栈的增长是常数时间,堆分配的性能取决于分配(找到合适大小的空洞)和取消分配(折叠空洞以减少)的堆的当前复杂性碎片化,因为如果我没记错的话,许多标准库实现在删除期间需要时间来执行此操作)。

这让我印象深刻,因为它可能非常依赖于编译器。特别是对于这个项目,我正在使用 Metrowerks PPC 的编译器建筑学。了解这种组合最有帮助,但一般来说,对于 GCC 和 MSVC++,情况如何?堆分配的性能不如堆栈分配吗?没有区别吗?或者差异如此之小以至于变成毫无意义的微优化。

最佳答案

堆栈分配要快得多,因为它真正做的只是移动堆栈指针。使用内存池,您可以从堆分配中获得可比的性能,但这会稍微增加复杂性并带来一些麻烦。

此外,堆栈与堆不仅是性能方面的考虑;它还会告诉您很多有关对象的预期生命周期的信息。

关于c++ - 哪个更快 : Stack allocation or Heap allocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com