benchmarkSync function

BenchmarkResult benchmarkSync(
  1. String name,
  2. void operation(), {
  3. int iterations = 10,
  4. int warmupIterations = 2,
})

Benchmark a synchronous function

Implementation

BenchmarkResult benchmarkSync(
  String name,
  void Function() operation, {
  int iterations = 10,
  int warmupIterations = 2,
}) {
  // Warmup
  for (int i = 0; i < warmupIterations; i++) {
    operation();
  }

  // Benchmark
  final times = <Duration>[];
  final startTotal = DateTime.now();

  for (int i = 0; i < iterations; i++) {
    final start = DateTime.now();
    operation();
    final end = DateTime.now();
    times.add(end.difference(start));
  }

  final endTotal = DateTime.now();
  final totalTime = endTotal.difference(startTotal);

  // Calculate statistics
  times.sort((a, b) => a.compareTo(b));
  final minTime = times.first;
  final maxTime = times.last;
  final avgMicros =
      times.fold<int>(0, (sum, t) => sum + t.inMicroseconds) ~/ iterations;
  final averageTime = Duration(microseconds: avgMicros);
  final opsPerSec = 1000000 / avgMicros;

  return BenchmarkResult(
    name: name,
    totalTime: totalTime,
    averageTime: averageTime,
    minTime: minTime,
    maxTime: maxTime,
    iterations: iterations,
    operationsPerSecond: opsPerSec,
  );
}