Ho cercato di velocizzare la mia applicazione in quanto è critica dal punto di vista delle prestazioni ... ad esempio, ogni millisecondo che riesco a ottenere è meglio. Per fare questo ho un metodo che chiama alcuni altri metodi e ciascuno di questi altri metodi è avvolto con un timer Stopwatch
e chiamate Console.WriteLine
. Cioè .:Console.WriteLine velocizza il mio codice?
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);
//...
}
Il problema è ogni volta che commentare la Stopwatch
e Console.WriteLine
righe il codice viene eseguito circa 20ms (non 50) più lento che è molto per quello che mi serve.
Qualcuno sa perché questo è?
EDIT: Procedimento SomeMainMethod
e altri nella classe sono avvolti in un Stopwatch
e Console.WriteLine
chiamate simile al precedente.
Il SomeMainMethod
e i metodi che chiama fanno parte di una classe che fa parte di una libreria di classi che viene chiamata da un banco di prova console, il tutto è a thread singolo.
Per ulteriori informazioni: L'app è in esecuzione in x86 .NET versione 4.6.1 Release con ottimizzazioni abilitate. Sto anche eseguendo questo in Visual Studio 2013, non al di fuori di esso.
Che sembra strano strano .. Non posso dire che ho notato cambiamenti di velocità come quello – BugFinder
Se non stai usando il cronometro, non stai misurando il tempo allo stesso modo. Hai giustificato questo? – stuartd
@stuartd ma hes dicendo che rimuovendo il cronometro e visualizza il suo * più lento *, non più veloce? quindi c'è meno codice – BugFinder