benchmarkSync function
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,
);
}