**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
六天前关门了。
改进这个问题
为什么下面的未注解代码要比注解掉的代码快得多?leetcode初学者在这里,我真的看不出两者之间的区别。
class Solution {
//public int maximumWealth(int[][] accounts) {
// int max = 0;
// for (int i = 0; i < accounts.length; i++) {
// int sum = 0;
// for (int j = 0; j < accounts[i].length; j++) {
// sum += accounts[i][j];
// }
// max = Integer.max(max, sum);
// }
// return max;
//}
public int maximumWealth(int[][] accounts) {
int max = 0;
for (int[] account : accounts) {
int sum = 0;
for (int j = 0; j < account.length; j++) {
sum += account[j];
}
max = Integer.max(max, sum);
}
return max;
}
}
2条答案
按热度按时间kknvjkwl1#
进行实验
取一个二维数组
30000x30000
随机元素。准备三种对标方法,每种方法调用20次,测量时间并计算平均值。结果:增强的for循环比常规for循环快,并行流快两倍。
最佳结果:平行流
完整结果:
实验代码:
z5btuh9x2#
差异
你的第一种方法
maximumWealth(int[][] acounts
在内部循环和外部循环中使用传统的for循环,而在外部循环中使用的第二种方法中使用增强的for循环实验
测试运行时间。
在accounts数组中创建了21个数组
用两个不同的maximumwealth(int[][]acounts)循环遍历它
首先,我们使用增强的for循环
在第二个循环中,我们使用传统的for循环
停止以纳秒为单位的执行时间。
执行步骤3十次,然后计算平均值
以纳秒为单位比较平均值
哪个环路更快?
增强for循环
运行时平均值
平均值=39137,0纳秒
传统for循环
运行时平均值
平均值=42254,3纳秒
结论
所以我不会说增强的速度快得多。我想说这是一个微小的纳秒快一点。
这里需要注意的一点是,增强的for循环使用迭代器,因此如果您使用迭代器手动迭代集合,那么您应该具有几乎相同的性能。
增强的for循环的好处是它方便而且不容易出错,但若您想要对迭代过程有更多的控制,那个么就使用传统的for循环。
资源:
java中for循环和增强for循环的区别
为什么增强的for循环比普通的for循环更有效