我写了一个简单的数独求解器。为了粗略测试我使用简单的System.currentTimeMillis调用的性能。
我在文本文件中准备了一组初始数独配置。程序读取文件并解决每个数独配置。在运行测试时,我注意到前 3-4 次求解运行确实比其他运行慢,而且慢我的意思是数量级。
有示例伪代码片段:
main(){
while(file has lines){
configuration = readLine();
Solver s = new Solver(configuration);
now1 = System.currentTimeMillis();
s.solve();
now2 = System.currentTimeMillis();
System.out.print(now2 - now1);
}
}
我只测量solve()方法,所以 IO 不是问题,我什至将一些数据硬编码到程序中 - 前几个仍然慢。谜题的难度也不是问题,因为我尝试了不同的排列和配置难度,并且总是相同 - 前几个较慢。
我的问题是 - 为什么会这样,有没有办法防止它?