1. ホーム
  2. optimization

[解決済み] ロガー slf4j 文字列の連結の代わりに{}でフォーマットすることの利点

2022-09-25 09:33:52

質問

を使用する利点はありますか? {} を使う利点はありますか?

slf4jからの例

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);

の代わりに

logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);

設定ファイルによっては、実行時にパラメータ評価(と文字列連結)を回避できるため、速度最適化のためだと思います。しかし、パラメータが2つしかない場合、文字列連結以外の選択肢がないことがあります。この問題についての見解が必要です。

どのように解決するのでしょうか?

それは 文字列連結のパフォーマンスに関するものです。ロギング ステートメントが密集している場合、潜在的に重要です。

(SLF4J 1.7以前) しかし、2つのパラメータしか可能ではありません

ロギング文の大半は2つ以下のパラメータを持つため、バージョン1.6までのSLF4J APIは大半のユースケースをカバーしています(だけ)。 API設計者は、APIバージョン1.7以降、varargsパラメータを持つオーバーロードされたメソッドを提供しています。

2つ以上のパラメータが必要で、1.7以前のSLF4Jにこだわる場合は、文字列連結または new Object[] { param1, param2, param3, ... } . パフォーマンスはそれほど重要ではないほど、それらの数は少ないはずです。