のための一般的な機能に正常な機能の変換しますコードレビューコメントがあります)、debug
の条件がONでなくても、class
文字列変換のオブジェクトが発生します。いくつかの場所では、これは望ましくないパフォーマンスの低下につながります。は、私は次のようにロギング機能を実装した最適化
if()
の条件をどこにでも入れてコードを乱雑にしたくないのは、output
ということだけですが、それ以外のことは繰り返されます。 Javaの機能を使用してこの問題を解決する最良の方法は何ですか?
私は、ジェネリックを使用して考える:
<T> void log (String output, T arg)
{
if(debug)
{
String val = <some string captured>;
Log.write("Logging: " + val + output + arg.toString(), this.handle);
}
}
は、このアプローチは、優れた最適化を行いますか?また、この汎用関数をエレガントに拡張して複数の引数を取ることはできますか?
+1いい回答です。もう1つのクエリ: 'debug'条件がなければ、' log'関数が呼び出されます。私はそれについてもコードレビューのコメントを得ることができるのではないかと心配しています。関数呼び出しを保存することさえ時期尚早の最適化と言えるでしょうか? (注:関数は実行中に何度も呼び出されます) – iammilind
@ iammilind:わかりません。典型的な方法は、関数呼び出しのまわりにデバッグ条件を置くことですが、何もしない関数を呼び出すことはパフォーマンスを著しく損なうものではありません。 – axtavt
私は参照してください。ログが 'if()'条件で囲まれている典型的なアプローチを保持する方が良いでしょう。ありがとう。 – iammilind