最近、ファイル形式の書き込みライブラリを書き直しました。私は自分のコードが乱雑で、すべてが非常に複雑になり、一般的に保守を維持するのが難しいことに気づきました。
ですから、私の新しいライブラリはもっと整理されていてきれいです。古いライブラリでタスクを実行する方法の多くは、必要以上に複雑であることに気づきました。そのため、新しいコードの方がはるかに高速であると期待していました。
まあ、正確ではありません。最初に、.NetフレームワークのStopwatchクラスを使用してパフォーマンスをテストしました。私の古いライブラリは一貫して高速でしたが、数え切れないほどの改善と最適化があったため、私はショックを受けました。
次に、dotTracePerformanceProfilerを使用して両方をテストしました。予想通り、私の新しいライブラリはより高速でした-約2倍高速でした!私の古いライブラリは62ミリ秒で、新しいライブラリは28ミリ秒でした。
だから私は何が起こっているのかわかりません。Visual Studioでは、新しいライブラリの速度が大幅に低下します。実際、非常に一貫性がなく、00 :: 00::00.042から00::00::00.351の範囲になります。
なぜこれが起こっているのか誰かが知っていますか?dotTraceは2倍速いと言っており、Stopwatchは2〜4倍遅いと言っています。
皆様のご協力に感謝いたします。
- アレックス
編集:
コードは両方のライブラリで同じであり、どちらも新しいライブラリと古いライブラリを参照するだけです。これは、コンソールアプリケーションでテストされました。
class Program {
static void Main(string[] args) {
Stopwatch sw = new Stopwatch();
sw.Start();
Textstring txt = new Textstring("TestText");
txt.Text = "This is a test textstring.";
RdwFile f = new RdwFile("Test");
f.Add(txt);
f.Save();
sw.Stop();
Console.WriteLine(sw.Elapsed.ToString());
Console.ReadKey();
}
};