warmupAsync method

Future<({int iter, int ticks})> warmupAsync(
  1. Future<void> f(), {
  2. Duration duration = const Duration(milliseconds: 200),
  3. int preRuns = 3,
})

Measures the runtime of f for duration and reports the average runtime expressed as clock ticks.

Implementation

Future<({int ticks, int iter})> warmupAsync(
  Future<void> Function() f, {
  Duration duration = const Duration(milliseconds: 200),
  int preRuns = 3,
}) async {
  var ticks = microsecondsToTicks(duration.inMicroseconds);
  var iter = 0;
  reset();
  for (var i = 0; i < preRuns; i++) {
    await f();
  }
  start();
  do {
    await f();
    iter++;
  } while (elapsedTicks < ticks);
  return (ticks: elapsedTicks ~/ iter, iter: iter);
}