Ce face Stopwatch.elapsed
elapsed returnează timpul total măsurat ca Duration, pe care îl poți compara, aduna sau afișa. elapsedMilliseconds returnează același timp direct ca număr întreg de milisecunde, rotunjit în jos; pentru operații foarte rapide folosește elapsedMicroseconds.
Valorile se pot citi și cât timp cronometrul merge: fiecare citire dă timpul de până atunci, ca la „timpi intermediari”. După stop(), valoarea rămâne fixă.
Ce returnează
elapsed: un Duration. Celelalte: un int.
Exemple
Exemplul 1: Timpi intermediari
Afișăm doar comparații, care sunt aceleași la fiecare rulare.
import 'dart:io';
void main() {
var sw = Stopwatch()..start();
sleep(Duration(milliseconds: 30));
var t1 = sw.elapsed;
sleep(Duration(milliseconds: 30));
var t2 = sw.elapsed;
sw.stop();
print(t1 >= Duration(milliseconds: 30));
print(t2 > t1);
print(sw.elapsedMilliseconds == sw.elapsed.inMilliseconds);
print(sw.elapsedMicroseconds >= sw.elapsedMilliseconds * 1000);
}
Rezultat
true
true
true
true
Exemplul 2: Compararea a două metode
Concatenarea cu + față de StringBuffer. Timpii exacți diferă de la o rulare la alta.
void main() {
const n = 20000;
var sw = Stopwatch()..start();
var s = '';
for (var i = 0; i < n; i++) {
s += 'x';
}
var timpPlus = sw.elapsed;
sw
..reset()
..start();
var sb = StringBuffer();
for (var i = 0; i < n; i++) {
sb.write('x');
}
var timpBuffer = sw.elapsed;
print('Lungimi: ${s.length} și ${sb.length}');
print('Cu +: ${timpPlus.inMicroseconds} µs');
print('Cu StringBuffer: ${timpBuffer.inMicroseconds} µs');
}
Rezultat posibil (diferă la fiecare rulare)
Lungimi: 20000 și 20000
Cu +: 25766 µs
Cu StringBuffer: 5462 µs
Greșeli frecvente
- Folosești
elapsedMillisecondspentru operații de sub o milisecundă și primești 0. FoloseșteelapsedMicrosecondssau repetă operația.
Comenzi înrudite
Stopwatch: Un cronometru pentru măsurarea timpului scurs; start() îl pornește, stop() îl oprește, isRunning spune dacă merge.Stopwatch.reset: Aduce timpul cronometrului la zero, fără să-l oprească sau să-l pornească.Duration: Un interval de timp (de exemplu 2 ore și 30 de minute), independent de calendar; Duration.zero este durata 0.Duration.inDays: Dau durata întreagă exprimată într-o singură unitate: zile, ore, minute, secunde sau milisecunde (rotunjit spre zero).