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 回」の追加行があるコードの方が時間がかかる理由がわかりません。

OpenVMS システム パラメータを変更する必要がありますか?

4

1 に答える 1

4

Java のパフォーマンスは複雑で微妙です。

あなたのテストは、何も教えてくれるほど洗練されていません。

Charlie Hunt 著の「Java Performance」と Jack Shirazi 著の「Java Performance Tuning」を購入して読む必要があります。

あなたの例には多くの問題があるので、修正しようとする価値はないと思います。この分野のちょっとした知識は非常に危険なことです。

于 2012-02-21T11:21:16.207 に答える