私はパフォーマンスが重視されるため、アプリケーションの高速化を検討しています。つまり、1ミリ秒ごとに抜け出すことができます。これを行うには、いくつかの他のメソッドを呼び出すメソッドがあり、これらのメソッドのそれぞれはStopwatch
タイマーとConsole.WriteLine
コールでラップされます。すなわち:私は、コードが実行さStopwatch
とConsole.WriteLine
行をコメントアウトたびConsole.WriteLineは自分のコードをスピードアップしますか?
private void SomeMainMethod()
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
SomeMethod();
sw.Stop();
Console.WriteLine("Time for SomeMethod = {0}ms", sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
SomeOtherMethod();
sw.Stop();
Console.WriteLine("Time for SomeOtherMethod= {0}ms", sw.ElapsedMilliseconds);
//...
}
問題は約20msの(いない50)私は必要なもののためにたくさんある遅くなります。
これはなぜですか?
EDIT:クラス SomeMainMethod
方法等はまた、上記と同様Stopwatch
とConsole.WriteLine
コールに包まれています。
SomeMainMethod
が呼び出すメソッドは、コンソールテストベッドから呼び出されるクラスライブラリの一部であるクラスの一部であり、すべてがシングルスレッドです。
詳細情報:このアプリケーションは、x86 .NET 4.6.1リリースモードで実行され、最適化が有効になっています。私はまた、これ以外の視覚スタジオ2013でこれを実行しています。
そんなに奇妙に聞こえます。スピードの変化に気付いていません。 – BugFinder
ストップウォッチを使用していない場合は、同じ方法で時間を測定していません。あなたはそれを説明しましたか? – stuartd
@stuartdしかし、ストップウォッチを取り除くことによってそのスピードは遅くなっていますか?のでコードless37 – BugFinder