blob: 3c9d9c58a266e92fccb0dee4fe5145e9a555d41a [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
library fasta.ticker;
class Ticker {
final Stopwatch sw = new Stopwatch()..start();
bool isVerbose;
late Duration previousTick;
Ticker({this.isVerbose: true}) {
previousTick = sw.elapsed;
}
void logMs(Object message) {
log((Duration elapsed, Duration sinceStart) {
print("$sinceStart: $message in ${elapsed.inMilliseconds}ms.");
});
}
void log(void f(Duration elapsed, Duration sinceStart)) {
Duration elapsed = sw.elapsed;
try {
if (isVerbose) f(elapsed - previousTick, elapsed);
} finally {
previousTick = sw.elapsed;
}
}
void reset() {
sw.reset();
previousTick = sw.elapsed;
}
}