0

我尝试在 OpenVMS(Itanium,OS 8.3)上测试 Java 性能。我创建了一些示例类来测试性能,如下所示

HEZ[AUN]$type 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]$type 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 循环“for 1 time”的代码要花费更多的时间

我应该修改一些 OpenVMS 系统参数吗?

4

1 回答 1

4

Java 性能是复杂而微妙的。

你的测试还不够复杂,根本无法告诉你任何事情。

你应该去购买和阅读 Charlie Hunt 的书“Java Performance”和 Jack Shirazi 的“Java Performance Tuning”

您的示例有很多问题,我认为不值得尝试修复它。这方面的小知识是一件非常危险的事情。

于 2012-02-21T11:21:16.207 回答