1

...または、パフォーマンスに影響を与えるために例外スローする必要がありますか?

ここで受け入れられた回答を参照してください。この方法でインスタンスを作成しても速度が大幅に低下しない場合は、これを実装したいと考えています。(私は毎秒何千ものオブジェクト、パーティクル システムなどを作成しています。Java でチェック例外を使用するときに存在するパフォーマンスへの影響を考えると、時期尚早の最適化ではありません。ありがとうございます。)

4

2 に答える 2

3

1秒間に数千万のオブジェクトを作成できます。プロファイラーに問題がない限り、何千人もの間、パフォーマンスについて心配することはありません。また、最初にコードを明確にして修正し、後でプロファイリングすることを検討します。

コードに例外が含まれていても、(コードを少し大きくする以外は)ほとんど影響はありません。例外のスローはコストがかかりますが、1秒あたり数千の例外をスローしても、アプリケーションのパフォーマンスに深刻な影響を与えることはありません。(バギーコードはすべて同じではありません)

public static void main(String... args) {
    long start = System.nanoTime();
    int runs = 10000000;
    for (int i = 0; i < runs; i++) {
        try {
            throwsException();
        } catch (Exception ignored) {
        }
    }
    long time = System.nanoTime() - start;
    System.out.printf("Took an average of %.3f micro-second per exception%n", time / runs / 1e3);
}

private static void throwsException() throws Exception {
    throw new Exception("Ignored");
}

このテストでは、1秒あたり100万new Exception秒以上がスローされます

Took an average of 0.744 micro-second per exception
于 2013-01-03T21:30:28.077 に答える