我试图在OpenVMS(Itanium,OS 8.3)上测试Java性能。我创建了一些示例类来测试性能,如下所示
HEZ [AUN] $类型Test.java
import java.util.Date;
public class Test {
public static void main(String args[]) {
Date d1 = new Date();
System.out.println(d1);
for (int k = 0;k < 1;k++) {
for (int i = 0;i < Integer.MAX_VALUE;i++) {
for (int j = 0;j < Integer.MAX_VALUE;j++) {
}
}
}
Date d2 = new Date();
System.out.println(d2.getTime() - d1.getTime());
}
}
HEZ [AUN] $类型Test2.java
import java.util.Date;
public class Test2 {
public static void main(String args[]) {
Date d1 = new Date();
System.out.println(d1);
// for (int k = 0;k < 1;k++) {
for (int i = 0;i < Integer.MAX_VALUE;i++) {
for (int j = 0;j < Integer.MAX_VALUE;j++) {
}
}
// }
Date d2 = new Date();
System.out.println(d2.getTime() - d1.getTime());
}
}
然后编译如下:
HEZ[AUN]$javac Test.java
HEZ[AUN]$javac Test2.java
HEZ[AUN]$java "Test"
Tue Feb 21 18:04:57 GMT+07:00 2012
3574
HEZ[AUN]$java "Test2"
Tue Feb 21 18:05:03 GMT+07:00 2012
282
从上面的内容来看,我不明白为什么与代码“for for”相比,为“一次”循环增加额外行的代码需要更多时间
我应该修改一些OpenVMS系统参数吗?
答案 0 :(得分:4)
Java性能复杂而微妙。
你的测试不够复杂,根本无法告诉你任何事情。
你应该去购买和阅读Charlie Hunt的书籍“Java Performance”和Jack Shirazi的“Java Performance Tuning”
你的例子有很多错误,我觉得不值得尝试修复它。在这方面有一点知识是非常危险的。