痛苦地缓慢调用函数

时间:2015-03-21 09:42:07

标签: c++ performance visual-studio

在使用C ++在Visual Studio中工作时,我偶然发现了一些有趣的事情。我正在调用一个函数,我通过嵌套的for循环为X和Y屏幕坐标设置像素到屏幕。我发现如果我在main()函数中执行操作,我的程序将以每秒250帧的速度运行,但如果我将它移动到外部函数并调用它,则帧速率降至每秒30帧。

我做了一些调查测试程序,它复制了我的程序中发生的事情。以下是我所做的事情的例证......

如果我运行以下程序......

void main()
{
   for (int i = 0; i < 1e9; i++) // Loop a billion times
   {
         1+1; // do something
   }
}

它在1.6秒内运行。

但是,如果我运行以下代码,除了通过调用外部函数之外,它完全相同...

void onePlusOne()
{
    1+1;
}

void main()
{
    for (int i = 0; i < 1e9; i++) // Loop a billion times
   {
         onePlusOne(); // call function instead
   }
}

执行需要18秒。

现在,我实际上可以避免调用该函数,只需要在main()中使用我需要的代码,但这会让它变得非常混乱和不可读。

请告诉我我做错了什么或者我的Visual Studio设置设置错误或其他什么。

1 个答案:

答案 0 :(得分:0)

它运行这么慢的原因调用该函数是因为我在调试模式下运行它。在发布模式下,它是相同的。现在这给我带来了更多的问题,比如为什么会这样,但无论如何,谢谢你的帮助。