blob: 4d23cf9b1fd772981bf7fcced077b0dc95e7c655 [file] [log] [blame]
import 'dart:async';
import 'dart:convert';
import 'dart:typed_data' show BytesBuilder;
import 'dart:io';
import 'benchmarker.dart';
/// Take --verbose-gc data from stdin and print the combined runtime.
///
/// E.g. (and this is not pretty):
/// out/ReleaseX64/dart --verbose-gc \
/// hello.dart 2> /dev/stdout 1> /dev/null | out/ReleaseX64/dart \
/// pkg/front_end/tool/verbose_gc_helper.dart
Future<void> main() async {
Completer completer = new Completer();
BytesBuilder bb = new BytesBuilder();
late StreamSubscription<List<int>> subscription;
subscription = stdin.listen((List<int> data) {
bb.add(data);
}, onDone: () {
subscription.cancel();
completer.complete();
}, onError: (_) {
subscription.cancel();
completer.complete();
});
await completer.future;
GCInfo gcInfo = parseVerboseGcText(utf8.decode(bb.takeBytes()).split("\n"));
print(gcInfo.combinedTime);
}