在使用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设置设置错误或其他什么。
答案 0 :(得分:0)
它运行这么慢的原因调用该函数是因为我在调试模式下运行它。在发布模式下,它是相同的。现在这给我带来了更多的问题,比如为什么会这样,但无论如何,谢谢你的帮助。