| 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); |
| } |