0

DEBUG フラグを追加し、if statementすべてのLog.d呼び出しの前に追加する予定です

 public static final boolean DEBUG = FALSE;
 if (DEBUG)
 {
    Log.d(TAG,"Debug"); //dead code
 }

デッド コードはコンパイル時に削除されますか、それともif statement毎回呼び出されますか?

4

3 に答える 3

1

いいえ、コードの冗長性を高めます。たとえば、 Log4Jなどのログ ライブラリをこの目的に使用するだけです ...

logger.debug("Here is some DEBUG");

Android では、 android-logging-log4j ...を使用できます。

于 2013-02-03T10:01:45.123 に答える
1

完全に削除されたわけではありませんが、CPU の分岐予測によるパフォーマンスへの影響はありません。

理想的には、ロガーのロギング レベルを使用して、ロガーを呼び出す必要があるかどうかを判断する必要があります。

注:このような単純なメソッド呼び出しは、チェックするかどうかに関係なく(ライブラリがチェックする必要があります)、ほとんどオーバーヘッドがありません。パフォーマンス上の利点が得られるのは、ログメッセージで次のようなことをしている場合です。

LOGGER.debug("The map is " + map);

この場合、デバッグが有効な場合にのみデバッグ メッセージが表示されますが、文字列メッセージは毎回ビルドされるため、より効率的です。

if(LOGGER.isDebugEnabled())
    LOGGER.debug("The map is " + map);
于 2013-02-03T10:05:07.950 に答える
1

デバッグ コードは常に実行されます (常に if)。ところで、Android にはすでにこのタイプのフラグがあります。BuildConfig.DEBUG

于 2013-02-03T10:08:06.243 に答える