相关疑难解决方法(0)

哪个更快:堆栈分配或堆分配

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

我正在小心处理堆栈分配的东西,而不是堆分配它们.他正在跟我说话,看着我的肩膀并评论说这没有必要,因为他们的表现是明智的.

我一直认为堆栈的增长是恒定的时间,并且堆分配的性能取决于堆的当前复杂性(用于找到合适大小的孔)和解除分配(折叠孔以减少碎片,如如果我没有弄错的话,许多标准库实现在删除期间需要时间来完成此操作.

这让我觉得可能非常依赖于编译器.特别是对于这个项目,我使用Metrowerks编译器来实现PPC架构.对这种组合的洞察力将是最有帮助的,但总的来说,对于GCC和MSVC++,情况如何?堆分配不如堆栈分配高吗?没有区别吗?或者差异是如此微小,它变得毫无意义的微优化.

c++ memory heap performance stack

489
推荐指数
13
解决办法
12万
查看次数

某些基本操作的CPU成本数量级

在回答了那个问题并且被拒绝后,我想和你一起检查一下.

为了得到我编写的代码成本的草案,我倾向于以这种方式扩展操作.

  • 堆分配比堆栈分配慢大约1000倍.
  • 具有屏幕/输出的IO比堆分配慢大约1000倍.
  • 硬盘上的IO比屏幕上的图形IO慢大约1000倍.

您认为这是正确的假设/数量级/估计吗?

(当然,没有什么比真正的应用程序分析:-))

编辑:作为根据你的答案和评论的第一个结论,可以说我的数字1000被大大高估了.

c++ performance memory-management

2
推荐指数
1
解决办法
639
查看次数

标签 统计

c++ ×2

performance ×2

heap ×1

memory ×1

memory-management ×1

stack ×1