Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 每帧性能函数调用数_C++_Performance - Fatal编程技术网

C++ 每帧性能函数调用数

C++ 每帧性能函数调用数,c++,performance,C++,Performance,我是一名游戏开发人员,因此性能对我来说非常重要。 我的简单问题是: 我每帧都有很多检查(按钮点击、碰撞等),但我不想将所有内容都放在一个函数中,因此我会将它们拆分为其他函数并调用它们: void Tick() { //Check 1 ..... lots of code //Check 2 ...... lots of code //Check 3 ..... lots of code } 到 每帧函数调用是否对性能有任何影响?(非内联) 显然,第二个版本更具可读性。如果不按值传递任何复

我是一名游戏开发人员,因此性能对我来说非常重要。 我的简单问题是:

我每帧都有很多检查(按钮点击、碰撞等),但我不想将所有内容都放在一个函数中,因此我会将它们拆分为其他函数并调用它们:

void Tick()
{
 //Check 1 ..... lots of code
 //Check 2 ...... lots of code
 //Check 3 ..... lots of code
}

每帧函数调用是否对性能有任何影响?(非内联)
显然,第二个版本更具可读性。

如果不按值传递任何复杂对象,调用多个函数而不是将所有代码放在一个函数中的开销应该可以忽略不计(例如。
将函数参数放在堆栈顶部,为返回类型添加空间,跳转到被调用函数代码的开头)

您不能确定,具体来说,编译器可以自动内联小函数。确保这一点的唯一方法是使用探查器并比较这两种场景

为什么不分析一下并找出答案呢?如果函数真的很琐碎,那么调用函数的开销可能会很大,但在大多数情况下并非如此。然而,要真正找到答案,唯一的方法是测量差异。我总是假设函数调用是“免费的”,如果以后分析告诉我它们是一个问题,请确保它们以某种方式内联。如果需要数字,请测量。并使用真正的编译器配置(如发布模式、启用优化等)来测量。我犯了不止一个错误,就是没有看到真正的优化应用程序。如果性能对你很重要,你就会知道微优化是愚蠢的。现在你只是在猜测。即使函数是空的,它在版本优化中也有一个小的开销x.x是的,但这是一个折衷的问题。一般来说,一个好的面向对象应用程序设计的性能很差。为了优化,您必须打破良好的设计规则(boost的入侵库就是一个很好的例子)。那么,对于一个已经需要数百毫秒才能执行的函数来说,打破良好的设计规则来获得一些毫秒值吗?有关面向对象设计陷阱的更多信息,请参见本演示文稿:ofc有助于提高可读性等,但将函数拆分为太多不必要的小函数可能会导致性能影响,尤其是在旧的移动设备上。(我想是吧?)
void Tick()
{
 funcCheck1();
 funcCheck2();
 funcCheck3();
}

void funcCheck1()
{
 //check1 lots of code
}
void funcCheck2()
{
 //check2 lots of code
}
void funcCheck3()
{
 //check3 lots of code
}