rt :
1.for(int i = 100000; i > 0; i–-) {} 2.for(int i = 1; i < 100001; i++) {} 哪个更快
1.for(int i = 100000; i > 0; i–-) {} 2.for(int i = 1; i < 100001; i++) {} 哪个更快
解决方案 »
- oracle中怎样执行这个sql,或者怎样调用
- FileDialog对话框类打开对话框后能不能修改“保存(或者打开)类型”的文本框内的文字-->比如默认为“所有文件(*.*)”,修改成“Microsoft Office Excel 工作簿( *.xls)”
- 多线程同步问题--获得在线用户列表异常
- 两个窗体(分别是j1,j2), 从j1中弹出j2,要求j2关闭时 将j2中txt1(文本框)中的值传回到j1 有什么好方法么?
- 问一个字符串分割的方法,不知道哪位有好办法呀
- 一年经验java期望薪水应该要多少 ???????
- 怎样才算是一个合格的java工程师,感觉自己做了一年的程序员,还停留在增删改查的阶段,就知道几个字符串,集合,JDBC等几个有限的类的用
- ArrayList和Vector的区别,HashMap和Hashtable的区别
- BoardLayout布局一问
- 请问Java中线程锁是到底怎么锁的,谢谢。
- 问一个JAVA编程问题,要处理大数据,要速度快的话能不能不把它全部放到内存里啊?
- java 怎么写啊!能不能附加代码和详细解释啊
经过我机器测试 第一个的时间是第二个的大概两倍!
【把值改到 10000000 时才能看到经历了几十毫秒】
Date date = new Date();
long l1 = new Date().getTime();
for(int i = 10000000; i > 0; i--) {}
long l2 = new Date().getTime();for(int i = 1; i < 10000001; i++) {}
long l3 = new Date().getTime();
System.out.println(l1);
System.out.println(l2);
System.out.println(l3);
其中一次的执行结果:
1279175742430
1279175742461
1279175742477第一次大概30毫秒
第二次大概15毫秒。
public class ForTest {
public static void for1() {
long bTime = System.nanoTime();
for (int i = 0; i < 100000000; i++) {
// do nothing
}
System.out.println(System.nanoTime() - bTime);
} public static void for2() {
long bTime = System.nanoTime();
for (int i = 100000000; i > 0; i--) {
// do nothing
}
System.out.println(System.nanoTime() - bTime);
} public static void main(String[] args) {
for2();
for1();
}
}测试结果飘忽不定..
Test 2: 56462213
JDK1.5: 第一种慢一倍
JDK1.6: 第一种稍微快一点
long sum = 0l;
long start = (new Date()).getTime();
for(int i = 999999999 ; i > 0 ; i --) {
sum += i;
}
long end = (new Date()).getTime();
System.out.println("--- :" + (end - start));
sum = 0;
start = (new Date()).getTime();
for(int i = 1 ; i <= 999999999 ; i ++) {
sum += i;
}
end = (new Date()).getTime();
System.out.println("+++ :" + (end - start));
}
同意,还有,> 比>= 快一些 ,比如 <= size - 1 写成 < size 更好
其实LZ 没必要纠结这个啊
可以测试下的啊 end-start 就好了啊
public class Test {
public static void main(String[] args) {
long start1 = new java.util.Date().getTime();
for(int i = 100000; i > 0; i--) {
System.out.println("循环 1");
}
long end1 = new java.util.Date().getTime();
System.out.println(end1-start1);
long start2 = new java.util.Date().getTime();
for(int i = 1; i < 100001; i++) {
System.out.println("循环2");
}
long end2= new java.util.Date().getTime();
System.out.println(end2-start2);
}
}
结果:
.
.
.
循环 1
循环 1
循环 1
952
循环2
循环2
循环2
.
.
.
1516
你这个测试结果是在哪里运行的?如果是在eclipse里面,恭喜你,测试不公平,永远第一个合算。
public static void main(String[] agrs){
long start1 = new java.util.Date().getTime();
for(int i=100000;i>0;i--)
{
System.out.println("循环1");
}
long end1 = new java.util.Date().getTime();
System.out.println(end1-start1);
}
}
/*循环1
循环1
循环1
40995*/
/*Eclipse下循环1
循环1
循环1
1524
*/public class Test2 {
public static void main(String[] args){
long start2 = new java.util.Date().getTime();
for(int i=1;i<100000;i++)
{
System.out.println("循环2");
}
long end2 = new java.util.Date().getTime();
System.out.println(end2-start2);
}
}
/*
循环2
循环2
循环2
循环2
循环2
循环2
38794
*/
/*
Eclipse下
循环2
循环2
循环2
1406
*/