〖JAVA经验〗JAVA技巧:全面测试JAVA各种循环的性能

以前一直有人说,foreach的性能有损失,不建议使用,今天特意测试了一下,结果是for方式的性能最好,foreach次之,而IteraTor循环性能最差..

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 list = new ArrayList(number);

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 it = list.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 list = new ArrayList(number);

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 it = list.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才是最好的,推荐大家使用。

一起交流学习请访问:Tore_m_1206686_21115_1_1.html”>http://www.shangxueba.com/sTore_m_1206686_21115_1_1.html

孜孜不倦的追求奋斗,加油。

〖JAVA经验〗JAVA技巧:全面测试JAVA各种循环的性能

相关文章:

你感兴趣的文章:

标签云: