csharp log4net的を各クラスで毎回GetLoggerするか,上下文内の记录器をGetLoggerして使いまわすかでコストの差を见てみた。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp log4net的を各クラスで毎回GetLoggerするか,上下文内の记录器をGetLoggerして使いまわすかでコストの差を见てみた。相关的知识,希望对你有一定的参考价值。
// なぜかWPFで作っているが…。
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
// log4netを各クラスで毎回GetLoggerするか、Context内のLoggerをGetLoggerして使いまわすかで
// コストの差を検証してみた。
// 毎回: 76.988K
// 使い回し:77.484K
// よって、コストに差はない。
// あるかと思ったんだけどなあ…。
#if false
var hoge = new List<Hoge>();
for (int i = 0; i < 100000; i++)
{
hoge.Add(new Hoge(i));
}
#else
var hoge2 = new List<Hoge2>();
var ct = new Context();
for (int i = 0; i < 100000; i++)
{
hoge2.Add(new Hoge2(ct, i));
}
#endif
}
}
public class Hoge
{
private log4net.ILog logger;
private readonly int id;
public Hoge(int i)
{
this.id = i;
this.logger = log4net.LogManager.GetLogger(i.ToString());
this.logger.Info((i + 1).ToString() + "回目のインスタンス作成です。");
}
}
public class Context
{
private log4net.ILog logger;
public log4net.ILog Logger { get { return logger; } set { this.logger = value; } }
}
public class Hoge2
{
private readonly Context context;
private readonly int id;
public Hoge2(Context c, int i)
{
this.id = i;
this.context = c;
this.context.Logger = log4net.LogManager.GetLogger(i.ToString());
this.context.Logger.Info((i + 1).ToString() + "回目のインスタンス作成です。");
}
}
以上是关于csharp log4net的を各クラスで毎回GetLoggerするか,上下文内の记录器をGetLoggerして使いまわすかでコストの差を见てみた。的主要内容,如果未能解决你的问题,请参考以下文章
markdown TimeWithZoneクラスでUTCの时间を作る
csharp 的SerialPortクラスのラッパー
csharp GameControllerクラスを取得する静メソッド
csharp MATRIX4X4クラスを使って座标変换するサンプル
csharp クラスのプロパティ,フィールド情报を取得する:リフレクションを使用する
csharp ジェネリッククラスに定义した静态フィールドは型パラメータ毎に定义される。