c# - 第一个循环比 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 秒
解决方案
推荐阅读
- python - 有没有一种有效的方法来比较两个 DataFrame 或 Series 之间的每一列的值?
- javascript - 动态点击按钮 - 访问动态内容
- python - 无法使用 python-telegram-bot 创建电报机器人菜单
- jestjs - 如何使用 jest 和酶测试 useRef 的电流?
- javascript - cy.wait 的赛普拉斯良好实践
- npm - 为什么在使用 npm install 时出现权限错误以及如何解决?
- ansible - 通过在 Jinja2/ansible 之间添加一个字符串来合并 2 个列表
- android - OPEN_APP_FEATURE 操作无法通过语音命令运行 [通过应用程序操作测试工具完美运行]
- python - Python tkinter filedialog在mac上禁用菜单
- python - Python yield 不等待阻塞调用