在C#中,第一个循环是否比随后的循环慢?

时间:2019-04-03 04:50:17

标签: c# algorithm loops time analysis

我正在分析一种算法的时间效率,其中该算法是使用具有设定大小的随机输入数组运行的,但是存在许多测试循环。对于第一个循环为什么要比随后的所有循环(测试)花费更长的时间,我感到困惑。

我正在使用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秒

0 个答案:

没有答案