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が好きなら担いで見るのもよい。
あと、設定が一番ゴチャゴチャしてる。
専用の設定エディタが付属するけど、使い心地が微妙でもどかしい。

(さらに…)

投稿者:sato 投稿日時:

プログラムは語る: 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;
    }
}

(さらに…)

投稿者:Yamaguchi Youhei 投稿日時:

プログラムは語る: 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;
    }
}

(さらに…)

投稿者:Yamaguchi Youhei 投稿日時:

ブログらしい(第2回)

今回は、C#でなんとなくポインタを使ってみることにする。

ポインタを使うと何がうれしいかを考えてみると、・・・やっぱり速度なのかな?

ということで、

  • 配列そのまま
  • Enumeratorを使う
  • ポインタを使う

の3つで速度検証してみた。

(さらに…)

投稿者:shimada 投稿日時: