ava code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package test;
public class Test
{
public static void main(String[] args){
double d1 = 3.14d;
long t1 = System.currentTimeMillis();
for(int i=0; i<2000000000;i++){
d1 += 0.1f;
}
long t2 = System.currentTimeMillis();
long time = t2 - t1;
System.out.println(time);
System.out.println(d1);
}
}
原本是想写个小程序估算一下在我的电脑上进行20亿次浮点运算需要多长时间(这是当年的银河II巨型计算机的计算能力)这段程序在我的电脑上运行的结果是
Plain Text code
?
1
2
3
D:\Temp>java test.Test
1791
1.9999999621907073E8
但是如果把最后一条打印语句注释,则结果成了
Plain Text code
?
1
2
D:\Temp>java test.Test
5
也就是说,最后一条打印语句会影响到前面的 t1、t2 的值?
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package test;
public class Test
{
public static void main(String[] args){
double d1 = 3.14d;
long t1 = System.currentTimeMillis();
for(int i=0; i<2000000000;i++){
d1 += 0.1f;
}
long t2 = System.currentTimeMillis();
long time = t2 - t1;
System.out.println(time);
System.out.println(d1);
}
}
原本是想写个小程序估算一下在我的电脑上进行20亿次浮点运算需要多长时间(这是当年的银河II巨型计算机的计算能力)这段程序在我的电脑上运行的结果是
Plain Text code
?
1
2
3
D:\Temp>java test.Test
1791
1.9999999621907073E8
但是如果把最后一条打印语句注释,则结果成了
Plain Text code
?
1
2
D:\Temp>java test.Test
5
也就是说,最后一条打印语句会影响到前面的 t1、t2 的值?
package test;
public class Test
{
public static void main(String[] args){
long t1 = System.currentTimeMillis();
for(int i=0; i<2000000000;i++){
}
long t2 = System.currentTimeMillis();
long time = t2 - t1;
System.out.println(time);
}
}你可以试试,执行的结果是去掉d1一样。如果不一样的话,那就是JDK版本问题啦。(我测试用的是JDK1.7)