gpt4 book ai didi

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

转载 作者:bug小助手 更新时间:2023-10-28 01:30:40 28 4
gpt4 key购买 nike

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

我一直在尽可能地堆栈分配东西,而不是堆分配它们。他一边跟我说话,一边看着我,并评论说没有必要,因为它们在性能方面是相同的。

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

这让我觉得可能非常依赖编译器。特别是对于这个项目,我使用的是 Metrowerks PPC 的编译器建筑学。了解这种组合会很有帮助,但总的来说,对于 GCC 和 MSVC++,情况如何?堆分配的性能不如堆栈分配吗?没有区别吗?还是差异如此之小以至于微优化变得毫无意义。

最佳答案

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

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

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

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