指针间接与堆栈分配的成本是多少?

Min*_*wth 3 c stack memory-management indirection

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

总的来说,这里有合理的性能差异吗?

ick*_*fay 5

将变量放在堆栈上(至少在x86处理器上)非常快.在x86处理器上,使用堆栈数量在函数开头减去一次并在结尾添加一次; 添加更多变量只会改变数字,不会让它变得更慢.如果你正在使用间接,那可能是一些操作,所以它可能会慢一点,但如果你的编译器将该结构指针放在一个寄存器中,它可能就像加载和存储一样快.

我会坚持使你的代码变得更简单,因为它无论如何都是微优化,你应该只在你分析并确定它是一个瓶颈后才考虑它.