1 完整的测试代码
view plaincopy to clipboardprint?
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 测试JAVA各种循环的性能。
* for 方式的性能,foreach次之,而Iterator循环性能最差。
*
* @author 考试大
*/
public class TestLoop {
public static void main(String[] args) {
int number = 1000000;
// 我们构造一个列表
List
for (int i = 0; i < number; i++) {
list.add(Integer.toString(i));
}
System.out.println("测试列表的性能...");
// 我们用foreach方式测试
long begin = System.nanoTime();
for (String i : list) {
testMethod(i);
}
System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
begin = System.nanoTime();
// 下面我们用Iterator测试
Iterator
while (it.hasNext()) {
testMethod(it.next());
}
System.out.printf("%10s=%10d\n", "iterator", (System.nanoTime() - begin));
// 第三种,我们用index进行
begin = System.nanoTime();
for (int i = 0; i < number; i++) {
testMethod(list.get(i));
}
System.out.printf("%10s=%10d\n", "for", (System.nanoTime() - begin));
System.out.println("测试数组的性能...");
// 我们再来测试数组
String[] strArr = new String[number];
for (int i = 0; i < number; i++) {
strArr[i] = Integer.toString(i);
}
// 我们用foreach方式测试
begin = System.nanoTime();
for (String i : strArr) {
testMethod(i);
}
System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
// 第二种,我们用index进行
begin = System.nanoTime();
for (int i = 0; i < number; i++) {
testMethod(strArr[i]);
}
System.out.printf("%10s=%10d\n", "for", System.nanoTime() - begin);
}
public static void testMethod(String str) {
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 测试JAVA各种循环的性能。
* for 方式的性能,foreach次之,而Iterator循环性能最差。
*
* @author 考试大
*/
public class TestLoop {
public static void main(String[] args) {
int number = 1000000;
// 我们构造一个列表
List
for (int i = 0; i < number; i++) {
list.add(Integer.toString(i));
}
System.out.println("测试列表的性能...");
// 我们用foreach方式测试
long begin = System.nanoTime();
for (String i : list) {
testMethod(i);
}
System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
begin = System.nanoTime();
// 下面我们用Iterator测试
Iterator
while (it.hasNext()) {
testMethod(it.next());
}
System.out.printf("%10s=%10d\n", "iterator", (System.nanoTime() - begin));
// 第三种,我们用index进行
begin = System.nanoTime();
for (int i = 0; i < number; i++) {
testMethod(list.get(i));
}
System.out.printf("%10s=%10d\n", "for", (System.nanoTime() - begin));
System.out.println("测试数组的性能...");
// 我们再来测试数组
String[] strArr = new String[number];
for (int i = 0; i < number; i++) {
strArr[i] = Integer.toString(i);
}
// 我们用foreach方式测试
begin = System.nanoTime();
for (String i : strArr) {
testMethod(i);
}
System.out.printf("%10s=%10d\n", "foreach", System.nanoTime() - begin);
// 第二种,我们用index进行
begin = System.nanoTime();
for (int i = 0; i < number; i++) {
testMethod(strArr[i]);
}
System.out.printf("%10s=%10d\n", "for", System.nanoTime() - begin);
}
public static void testMethod(String str) {
}
}
2 运行结果
测试列表的性能...
foreach= 41997864
iterator= 43951774
for= 14351289
测试数组的性能...
foreach= 1751863
for= 1484585
3 结论:
foreach的性能很一般,for才是的,推荐大家使用。
本文来自 280文秘网(https://www.it280.com),转载请保留网址和出处
【JAVA技巧:全面测试JAVA各种循环的性能】相关文章:
青年人才论坛动员会的讲话02-11
会计从业考试:会计基础讲义(一)102-11
2017年6月英语四级听力常用的107个习语(21-40)02-11
英语六级语法:情态动词的回答方式02-11
no one与nobody的用法是什么 相关句子整理02-11
精选2012圣诞节祝福语短信大全:把我最真挚的圣诞节祝福送给你02-11
初中网络的英语作文02-11
论坚持和巩固马克思主义的指导地位02-11
