我正在分析一种算法的时间效率,其中该算法是使用具有设定大小的随机输入数组运行的,但是存在许多测试循环。对于第一个循环为什么要比随后的所有循环(测试)花费更长的时间,我感到困惑。
我正在使用system.diagnostics的秒表类运行C#。在算法测试功能中,秒表在没有其他代码块的情况下在前一行开始,在后一行结束。控制台中显示的调试结果表明,第一个测试总是比其他所有测试花费更长的时间。我对计算机科学的知识有限,如果答案不那么聪明,我深表歉意,但是在谷歌搜索“算法时间效率,为什么第一个循环比所有其他循环都需要更长的时间?”时,我找不到很多有用的信息。 >
void RunAlgorithm(int numTests =10, int arraySize = 9, int max =2, int min = -2)
{
for(int i = 0; i< numTests; i++)
{
int[] A = new int[arraySize];
for (int j = 0; j < arraySize; j++)
{
A[j] = rng.Next(min, max);
}
Array.Sort(A);
//run tests and record time
timer.Start();
algorithmResult = Algorithm(A);
timer.Stop();
timeTaken= (float)timer.Elapsed.TotalMilliseconds;
totalTime += timeTaken;
timer.Reset();
MockReport(timeTaken);
}
}
在输出中,第一次测试耗时0.3853秒 而所有其他测试的平均时间为0.0015秒