Ich habe mich damit beschäftigt, meine Anwendung zu beschleunigen, da sie leistungskritisch ist ... d. H. Jede Millisekunde, die ich daraus bekomme, ist besser. Um dies zu tun, habe ich eine Methode, die einige andere Methoden aufruft und jede dieser anderen Methoden wird mit einem Stopwatch
Timer und Anrufe eingewickelt. D.h .:Console.WriteLine beschleunigt meinen Code?
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);
//...
}
Das Problem ist, wenn ich die Stopwatch
und Console.WriteLine
Linien kommentieren Sie den Code ausgeführt wird etwa 20 ms (50) langsamer, die viel für das, was ich brauche.
Weiß jemand, warum das ist?
EDIT: Die SomeMainMethod
Methode und andere in der Klasse auch in ein Stopwatch
und Console.WriteLine
Anrufen ähnlich wie oben eingewickelt werden. Die und die von ihr aufgerufenen Methoden sind Teil einer Klasse, die Teil einer Klassenbibliothek ist, die von einem Konsolen-Testbed aus aufgerufen wird.
Weitere Informationen: Die App läuft im x86 .NET 4.6.1 Release-Modus mit aktivierten Optimierungen. Ich betreibe das auch im Visual Studio 2013, nicht außerhalb davon.
Das hört sich komisch komisch an ... Ich kann nicht sagen, dass ich Veränderungen in der Geschwindigkeit bemerkt habe – BugFinder
Wenn Sie die Stoppuhr nicht benutzen, messen Sie die Zeit nicht auf die gleiche Weise. Haben Sie das berücksichtigt? – stuartd
@stuartd aber hes sagt, dass durch das Entfernen der Stoppuhr und zeigt * langsamer *, nicht schneller? Also, es gibt weniger Code – BugFinder