1

Java で final static const 変数を使用して、コードのセクションがコンパイルされないようにすることができるという回答をここで見ました。そのアプローチに関する私の懸念は、私が忘れっぽいことです。:-(コードをチェックインする前に変数をfalseに戻すのを忘れる可能性が高く、プロジェクトに悪影響を与える可能性があります.

C/C++ では、コードのコンパイルを制御するために使用できる環境マクロを指定できます。例えば:

#if defined(_PROFILE)
Time startTime;
#endif

... run some code ...

#if defined(_PROFILE)
Time endTime;
std::cout << "Code took " << endTime - startTime << " seconds\n";
#endif

したがって、プロファイリング テスト コードは、コンパイラのコマンド ラインでオプションとして渡すことができ、誤ってチェックインされるリスクがない _PROFILE マクロを誰かが明確に定義した場合にのみコンパイルされます。

Javaでこれを模倣する方法はありますか?

4

1 に答える 1

2

ランタイム プロパティを使用できます。Java は動的にコンパイルされるため、ほとんど同じ効果があります。

 static final boolean PROFILE = Boolean.getBoolean("VictimZero.PROFILE");

 long startTime;
 if (PROFILE)
    startTime = System.nanoTime();

 ... run some code ...

 if (PROFILE) {
    long enTime = System.nanoTime();
    System.out.printf("Code took %.3f seconds%n", (endTime - startTime)/1e9);
 }

少しハックを使用できます

 static final boolean VICTIM_ZERO = 
                         System.getProperty("user.name").equals("VictimZero");
于 2012-09-24T16:18:18.883 に答える