技術情報
log4net, LoggingAB, NLogを比較してみた
[intlink id=”558″],[intlink id=”555″],[intlink id=”548″]の続き。
log4net, LoggingAB, NLogを比較してみた。
名前 | DLLサイズ | 速度 | 評価 |
---|---|---|---|
log4net 1.2.10 | 270,336 bytes | 70us/行 | ハマりどころなし。よくできている。 |
NLog 1.0 | 253,952 bytes | 67us/行 | バッファリング設定しないと遅い。きめ細かい設定ができるともいえる。 |
LoggingAB Enterprise Library 3.1 | 379,728 bytes | 224us/行 | 遅い。かゆいところに手が届かない印象。 |
出力なし | 0 bytes | 51us/行 | 最速だがログ出力してない(笑) |
まとめ
個人的にはNLogが好きなんだけど、実績とか考えるとlog4net使っとくのが無難だと思う。
LogginABはおすすめできない。
log4netはたぶんユーザ数が最多。
log4j使ってた経験があるなら設定とかすぐわかる。
パフォーマンスも隙が無い。
NLogは2006年からwebサイト更新されてないように見える。
十分枯れてると思うが、ちょっと不安。好意的に見れば、枯れててバージョンアップが不要なのかも??
LoggingABは重過ぎる。自作のリスナーとか作れば改善するかもしれない。
他のEnterprise Library機能と組み合わせるときにはこれしか選択肢なし。
ログ出力機能だけがほしいのであればオーバスペック。
Microsoftやpatterns & practicesが好きなら担いで見るのもよい。
あと、設定が一番ゴチャゴチャしてる。
専用の設定エディタが付属するけど、使い心地が微妙でもどかしい。
技術情報
プログラムは語る: toString編3
[intlink id=”133″](前回)の最後に『しかし、まだ改良する余地はあります。ヒントは「メソッドtoString(Collection)がどのように使われるのか?」です。』と謎を残しておきました。今回はその謎解きです。性能に注目して前回のプログラムを見てください。
前回のプログラム
import java.util.Iterator;
import java.util.Collection;
public class CollectionUtility
{
public static String toString(Collection aCollection)
{
String tString = "";
Iterator tIterator = aCollection.iterator();
if(tIterator.hasNext())
{
tString += tIterator.next();
while(tIterator.hasNext())
tString += ", " + tIterator.next();
}
return tString;
}
}
技術情報
プログラムは語る: toString編2
前回のプログラムは改良したとは言え、まだまだ突っ込みどころ満載です。そういう訳なので、今回も更に指摘して行きます。
今回はaCollection
の要素を順に取り出す処理の実現方法に注目します。前回のプログラムの何が良くないのか分かりますか?
前回のプログラム
import java.util.Iterator;
import java.util.Collection;
public class CollectionUtility
{
public static String toString(Collection aCollection)
{
Object tBuffer;
String tString = "";
Iterator tIterator = aCollection.iterator();
for(int i = 0; i < aCollection.size(); i++)
{
if(i == 0)
{
tBuffer = tIterator.next();
tString += tBuffer;
}
else
{
tBuffer = tIterator.next();
tString += ", " + tBuffer;
}
}
return tString;
}
}
技術情報
ブログらしい(第2回)
今回は、C#でなんとなくポインタを使ってみることにする。
ポインタを使うと何がうれしいかを考えてみると、・・・やっぱり速度なのかな?
ということで、
- 配列そのまま
- Enumeratorを使う
- ポインタを使う
の3つで速度検証してみた。