【发布时间】:2010-12-11 16:04:07
【问题描述】:
我得到了一些代码,其中一些参数是指针,然后指针被取消引用 提供价值。我担心指针取消引用会花费周期,但是在查看之后 之前的一篇 StackOverflow 文章:How expensive is it to dereference a pointer?,也许没关系。
这里有一些例子:
bool MyFunc1(int * val1, int * val2)
{
*val1 = 5;
*val2 = 10;
return true;
}
bool MyFunc2(int &val1, int &val2)
{
val1 = 5;
val2 = 10;
return true;
}
就风格而言,我个人更喜欢通过引用传递,但有一个版本更好 (在流程周期方面)比另一个?
【问题讨论】:
-
这是您应该不担心的那种宏优化。生成最好的代码是编译器的工作(它考虑的因素比普通人要多得多,只有绝对最好的汇编编写者才会挑战编译器)。您(作为开发人员)的工作是提出执行任务的最佳算法(因为编译器无法做到这一点)。至于风格,人们会双向争论(我更喜欢参考,因为我不需要检查 NULL)。
-
++ 没有人应该只有 1 个代表 :-)
-
n 这种情况(短函数)可能值得使用内联。由于您关心性能,我假设您在短时间内多次调用这个小函数(或类似的东西)。
-
@Martin:你的意思是“微观优化”——“宏观”是人们应该担心的大问题……
-
请注意,如果需要与 C 向后兼容,则应使用指针。否则我同意 Loki。
标签: c++ pointers performance