getStats method
Gets performance statistics for a category
Implementation
PerformanceStats getStats(String category, bool microseconds) {
final metrics = _completedMetrics[category] ?? [];
if (metrics.isEmpty) {
return PerformanceStats.empty(category);
}
final durations = microseconds ? metrics.map((m) => m.duration.inMicroseconds).toList() : metrics.map((m) => m.duration.inMilliseconds).toList();
durations.sort();
final int count = durations.length;
final int sum = durations.reduce((a, b) => a + b);
final double mean = sum / count;
final double median = count % 2 == 0 ? (durations[count ~/ 2 - 1] + durations[count ~/ 2]) / 2 : durations[count ~/ 2].toDouble();
final int min = durations.first;
final int max = durations.last;
final int p95 = durations[(count * 0.95).floor()];
final int p99 = durations[(count * 0.99).floor()];
// Calculate standard deviation
final double variance = durations.map((d) => Math.pow(d - mean, 2)).reduce((a, b) => a + b) / count;
final double stdDev = Math.sqrt(variance);
return PerformanceStats(
count: count,
mean: mean.round(),
median: median.round(),
min: min,
max: max,
p95: p95,
p99: p99,
standardDeviation: stdDev.round(),
sum: sum,
);
}