【问题标题】:What is the cost of pointer indirection versus allocating on the stack?指针间接与在堆栈上分配的成本是多少?
【发布时间】:2012-10-17 08:37:00
【问题描述】:

我有一个将被重复调用的绘制方法(每一帧......)。在这个方法中,我有一些本地定义的变量(大约 20 个)。我正在考虑将它们放在一个结构中,并将指向该结构的指针作为参数传递给该方法。这是希望间接操作比将变量放在堆栈上更快。

一般来说,这里是否存在合理的性能差异?

【问题讨论】:

  • 现在拼凑起来,虽然这是一个漫长的过程,所以我想我会去教育自己。 ;)

标签: c memory-management stack indirection


【解决方案1】:

将变量放入堆栈(至少在 x86 处理器上)非常快。在 x86 处理器上,使用堆栈相当于在函数开头减一次,在结尾加一次;添加更多变量只会更改数字并且不会使其变慢。如果您使用的是间接寻址,则可能需要更多操作,因此速度可能会慢一些,但如果您的编译器将该结构指针放在寄存器中,则加载和存储速度可能一样快。

我会坚持使用任何使您的代码更简单的方法,因为无论如何它都是一种微优化,您应该在分析并确定它是一个瓶颈之后才考虑它。

【讨论】:

  • 是的 - 我唯一会这样做的情况是,如果期望结构在调用之间保持某种状态。
猜你喜欢
  • 2015-04-11
  • 2020-09-02
  • 1970-01-01
  • 2021-09-01
  • 2013-05-13
  • 2020-11-22
  • 2020-12-19
  • 2012-09-16
  • 1970-01-01
相关资源
最近更新 更多