Dan*_*elG 8 c++ variables function local call
我经常看到多次调用其他函数的函数,而不是一次存储函数的结果.
即(1):
void ExampleFunction()
{
if (TestFunction() > x || TestFunction() < y || TestFunction() == z)
{
a = TestFunction();
return;
}
b = TestFunction();
}
Run Code Online (Sandbox Code Playgroud)
相反,我会这样写,(2):
void ExampleFunction()
{
int test = TestFunction();
if (test > x || test < y || test == z)
{
a = test;
return;
}
b = test;
}
Run Code Online (Sandbox Code Playgroud)
我认为版本2更好阅读,更好地调试.但我想知道为什么人们会像1号那样做?有什么我看不到的吗?绩效问题?当我看到它时,我在最坏的情况下看到数字(1)中的4个函数调用而不是数字(2)中的1个函数调用,因此性能应该在数字(1)中更差,不是吗?
我认为版本 2 更易于阅读和调试。
同意。
所以第(1)项的性能应该更差,不是吗?
不必要。如果TestFunction足够小,那么编译器可能会决定优化多个调用。在其他情况下,性能是否重要取决于ExampleFunction调用的频率。如果不经常,则优化可维护性。
另外,TestFunction可能会有副作用,但在这种情况下,代码或注释应该以某种方式清楚地表明这一点。