私は最近、さまざまな scala ロギング ライブラリを見てきましたが、それらの大部分はロギング機能を次のように実装しています。
def debug(s: => String)
そのため、デバッグ ログをオフにすると、ステートメントは実行されません。ただし、その利点の1つとして具体的に述べているlogulaに出くわしました
多くの Scala ロギング ライブラリとは異なり、Logula はロギング ステートメントに名前渡しセマンティクス (たとえば、f: => A) を使用しません。これは、次の 2 つのことを意味します。
- Scala コンパイラは、ロギング ステートメントごとに 1 回限りのクロージャ オブジェクトを作成する必要はありません。これにより、ガベージ コレクションの負荷が軽減されます。
これは実際に私にとって完全に理にかなっています。私の質問は、2 つのアプローチを比較する実際のパフォーマンス ベンチマーク/データはありますか? 理想的には、実際のプロジェクトからの何かと、不自然なベンチマークからのものでしょうか?