首页 > 解决方案 > 第一个循环比 C# 中的后续循环慢吗?

问题描述

我正在分析算法的时间效率,其中算法是使用设定大小的随机输入数组运行的,无论有多少循环都有测试。我很困惑为什么第一个循环比所有后续循环(测试)花费的时间要长得多。

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

标签: c#algorithmloopstimeanalysis

解决方案


推荐阅读