DEBUG フラグを追加し、if statement
すべてのLog.d
呼び出しの前に追加する予定です
public static final boolean DEBUG = FALSE;
if (DEBUG)
{
Log.d(TAG,"Debug"); //dead code
}
デッド コードはコンパイル時に削除されますか、それともif statement
毎回呼び出されますか?
DEBUG フラグを追加し、if statement
すべてのLog.d
呼び出しの前に追加する予定です
public static final boolean DEBUG = FALSE;
if (DEBUG)
{
Log.d(TAG,"Debug"); //dead code
}
デッド コードはコンパイル時に削除されますか、それともif statement
毎回呼び出されますか?
いいえ、コードの冗長性を高めます。たとえば、 Log4Jなどのログ ライブラリをこの目的に使用するだけです ...
logger.debug("Here is some DEBUG");
Android では、 android-logging-log4j ...を使用できます。
完全に削除されたわけではありませんが、CPU の分岐予測によるパフォーマンスへの影響はありません。
理想的には、ロガーのロギング レベルを使用して、ロガーを呼び出す必要があるかどうかを判断する必要があります。
注:このような単純なメソッド呼び出しは、チェックするかどうかに関係なく(ライブラリがチェックする必要があります)、ほとんどオーバーヘッドがありません。パフォーマンス上の利点が得られるのは、ログメッセージで次のようなことをしている場合です。
LOGGER.debug("The map is " + map);
この場合、デバッグが有効な場合にのみデバッグ メッセージが表示されますが、文字列メッセージは毎回ビルドされるため、より効率的です。
if(LOGGER.isDebugEnabled())
LOGGER.debug("The map is " + map);
デバッグ コードは常に実行されます (常に if)。ところで、Android にはすでにこのタイプのフラグがあります。BuildConfig.DEBUG