Odata creata o instantza a aceste clase: Stopwatch t = new Stopwatch(); (constructor fara parametri) se pot apela metodele de pornire si, respectiv, oprire a "cronometrului" - Start() si Stop().
t.Start() - porneste cronometrul, iar
t.Stop() il opreste!
In acest moment se poate apela una dinre proprietatile ElapsedTicks sau ElapsedMilliseconds - proprietati (readonly) care returneaza intervalul de timp dintre apelarea metodelor Start() si Stop(), in ticks sau milisecunde.
Simplu si frumos!
Acum sa vedem aceasta clasa la treaba intr-un scurt exemplu.
V-ati intrebat vre-odata ce e mai eficient (rapid) sa folositi: for sau while? Contor ascendent sau descendent? Folosind clasa StopWatch o sa incercam sa vedem ce se executa mai repede:
Cod: |
using System; using System.Diagnostics; namespace Stopwatch_tests { class Program { static void Main(string[] args) { int i; Stopwatch t = new Stopwatch(); t.Start(); for (i = 0; i < 10000000; i++) //ciclu for ascendent { } t.Stop(); Console.WriteLine("ascending for:"); Console.WriteLine("ticks: " + t.ElapsedTicks); Console.WriteLine("milisec: " + t.ElapsedMilliseconds); Console.WriteLine("nn"); t.Reset(); t.Start(); for (i = 10000000; i > 0; i--) //ciclu for descendent { } t.Stop(); Console.WriteLine("descending for:"); Console.WriteLine("ticks: " + t.ElapsedTicks); Console.WriteLine("milisec: " + t.ElapsedMilliseconds); Console.WriteLine("nn"); t.Reset(); t.Start(); i = 10000000; while (i > 0) //ciclu while ascendent { i--; } t.Stop(); Console.WriteLine("descending while:"); Console.WriteLine("ticks: " + t.ElapsedTicks); Console.WriteLine("milisec: " + t.ElapsedMilliseconds); Console.WriteLine("nn"); t.Reset(); t.Start(); i = 0; while (i < 10000000) //ciclu while descendent { i++; } t.Stop(); Console.WriteLine("ascending while:"); Console.WriteLine("ticks: " + t.ElapsedTicks); Console.WriteLine("milisec: " + t.ElapsedMilliseconds); Console.WriteLine("nn"); Console.ReadKey(); } } } |
La mine pe calcularor rezultatele arata cam asa:
''
ascending for:
ticks: 124439475
milisec: 40
descending for:
ticks: 89507722
milisec: 29
descending while:
ticks: 97489147
milisec: 31
ascending while:
ticks: 111771330
milisec: 36
''
ascending for:
ticks: 124439475
milisec: 40
descending for:
ticks: 89507722
milisec: 29
descending while:
ticks: 97489147
milisec: 31
ascending while:
ticks: 111771330
milisec: 36
''
De unde pot sa trag concluzia ca for cu contor descrescator este cea mai rapida modalitate de a executa un ciclu!