我生成了两个1000 x 1000的矩阵:
第一个矩阵:O和#。 第二个矩阵:O和B。
使用以下代码,第一个矩阵完成所需时间为8.52秒:
什么是导致运行时间戏剧性差异的原因?
第一个矩阵:O和#。 第二个矩阵:O和B。
使用以下代码,第一个矩阵完成所需时间为8.52秒:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
if (r.nextInt(4) == 0) {
System.out.print("O");
} else {
System.out.print("#");
}
}
System.out.println("");
}
使用这段代码,第二个矩阵完成所需时间为259.152秒:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
if (r.nextInt(4) == 0) {
System.out.print("O");
} else {
System.out.print("B"); // only line changed
}
}
System.out.println("");
}
什么是导致运行时间戏剧性差异的原因?
根据评论中的建议,只打印System.out.print("#");
花费7.8871
秒,而System.out.print("B");
则给出仍在打印...
。
正如其他人指出的那样,他们平时使用这个方法,我尝试了例如Ideone.com,发现两段代码执行速度相同。
测试条件:
- 我从Netbeans 7.2运行了这个测试,并将输出显示在其控制台上
- 我使用
System.nanoTime()
进行测量