由于性能至关重要,因此我正在优化应用程序中的每一行代码。我正在测试所有假设,因为我所期望的并不是我实际看到的。
对我来说,一个奇怪的事情是函数调用的执行。以下是两种情况。在循环内迭代一个整数,并在循环内使用一个函数。我希望函数调用变慢,但是变快??
有人可以解释吗?我正在使用.NET 4.7.1
更新:
切换循环也会切换运行时-我不明白为什么,但是会原样接受。在不同的应用程序中运行两个不同的循环会得到相似的结果。我假设将来函数调用不会产生任何额外的开销
public static int a = 0;
public static void Increment()
{
a = a + 1;
}
static void Main(string[] args)
{
//There were suggestions that the first for loop always runs faster. I have included a 'dummy' for loop here to warm up.
a = 0;
for (int i = 0;i < 1000;i++)
{
a = a + 1;
}
//Normal increment
Stopwatch sw = new Stopwatch();
sw.Start();
a = 0;
for (int i = 0; i < 900000000;i++)
{
a = a + 1;
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
//Increment with function
Stopwatch sw2 = new Stopwatch();
sw2.Start();
a = 0;
for (int i = 0; i < 900000000; i++)
{
Increment();
}
sw2.Stop();
Console.WriteLine(sw2.ElapsedMilliseconds);
Console.ReadLine();
}