analyzeReplayTrace function
Analyze a trace file and return the slowest spans.
Implementation
Future<ReplayTraceSummary> analyzeReplayTrace(
String path, {
int limit = 12,
}) async {
final file = io.File(path);
if (!await file.exists()) {
return ReplayTraceSummary(
path: path,
spanCount: 0,
maxDurationUs: 0,
spans: const <ReplayTraceSummarySpan>[],
);
}
final spans = <ReplayTraceSummarySpan>[];
final lines = await file.readAsLines();
for (var i = 0; i < lines.length; i++) {
final parsed = tryParseTraceSpan(path, i + 1, lines[i]);
if (parsed != null) spans.add(parsed);
}
spans.sort((a, b) => b.durationUs.compareTo(a.durationUs));
final top = spans.take(math.max(0, limit)).toList(growable: false);
return ReplayTraceSummary(
path: path,
spanCount: spans.length,
maxDurationUs: spans.isEmpty ? 0 : spans.first.durationUs,
spans: top,
);
}