Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(352)

Unified Diff: tests/compiler/dart2js/serialization/helper.dart

Issue 2156033002: Split out long-running serialization test and add timings to output (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tests/compiler/dart2js/serialization/helper.dart
diff --git a/tests/compiler/dart2js/serialization/helper.dart b/tests/compiler/dart2js/serialization/helper.dart
index 7d43fa1364ae081db33fa1dca7770899ebb66eda..97f1975e5136e5a41286714fb95e14ebbf79dd3f 100644
--- a/tests/compiler/dart2js/serialization/helper.dart
+++ b/tests/compiler/dart2js/serialization/helper.dart
@@ -115,28 +115,28 @@ typedef Future TestFunction(
bool verbose});
Future<SerializedData> serializeDartCore(
- {Arguments arguments: const Arguments()}) async {
- Uri uri = Uri.parse('memory:${arguments.serializedDataFileName}');
- print('------------------------------------------------------------------');
- print('serialize dart:core');
- print('------------------------------------------------------------------');
- SerializedData serializedData;
- if (arguments.loadSerializedData) {
- File file = new File(arguments.serializedDataFileName);
- if (file.existsSync()) {
- print('Loading data from $file');
- serializedData = new SerializedData(uri, file.readAsStringSync());
+ {Arguments arguments: const Arguments()}) {
+ return measure('dart:core', 'serialize', () async {
+ Uri uri = Uri.parse('memory:${arguments.serializedDataFileName}');
+ SerializedData serializedData;
+ if (arguments.loadSerializedData) {
+ File file = new File(arguments.serializedDataFileName);
+ if (file.existsSync()) {
+ print('Loading data from $file');
+ serializedData = new SerializedData(uri, file.readAsStringSync());
+ }
+ } else {
+ SerializationResult result =
+ await serialize(Uris.dart_core, dataUri: uri);
+ serializedData = result.serializedData;
}
- } else {
- SerializationResult result = await serialize(Uris.dart_core, dataUri: uri);
- serializedData = result.serializedData;
- }
- if (arguments.saveSerializedData) {
- File file = new File(arguments.serializedDataFileName);
- print('Saving data to $file');
- file.writeAsStringSync(serializedData.data);
- }
- return serializedData;
+ if (arguments.saveSerializedData) {
+ File file = new File(arguments.serializedDataFileName);
+ print('Saving data to $file');
+ file.writeAsStringSync(serializedData.data);
+ }
+ return serializedData;
+ });
}
class SerializationResult {
@@ -236,3 +236,59 @@ Future<List<SerializedData>> preserializeData(
outputCollector.getOutput('', 'data'));
return <SerializedData>[serializedData, additionalSerializedData];
}
+
+class MeasurementResult {
+ final String title;
+ final String taskTitle;
+ final int elapsedMilliseconds;
+
+ MeasurementResult(this.title, this.taskTitle, this.elapsedMilliseconds);
+}
+
+final List<MeasurementResult> measurementResults = <MeasurementResult>[];
+
+/// Print all store [measurementResults] grouped by title and sorted by
+/// decreasing execution time.
+void printMeasurementResults() {
+ Map<String, int> totals = <String, int>{};
+
+ for (MeasurementResult result in measurementResults) {
+ totals.putIfAbsent(result.title, () => 0);
+ totals[result.title] += result.elapsedMilliseconds;
+ }
+
+ List<String> sorted = totals.keys.toList();
+ sorted.sort((a, b) => -totals[a].compareTo(totals[b]));
+
+ int paddingLength = '${totals[sorted.first]}'.length;
+
+ String pad(int value) {
+ String text = '$value';
+ return '${' ' * (paddingLength - text.length)}$text';
+ }
+
+ print('================================================================');
+ print('Summary:');
+ for (String task in sorted) {
+ int time = totals[task];
+ print('${pad(time)}ms $task');
+ }
+
+ measurementResults.clear();
+}
+
+/// Measure execution of [task], print the result and store it in
+/// [measurementResults] for a summary.
+Future measure(String title, String taskTitle, Future task()) async {
+ Stopwatch stopwatch = new Stopwatch()..start();
+ print('================================================================');
+ print('$taskTitle: $title');
+ print('----------------------------------------------------------------');
+ var result = await task();
+ stopwatch.stop();
+ int elapsedMilliseconds = stopwatch.elapsedMilliseconds;
+ print('$taskTitle: $title: ${elapsedMilliseconds}ms');
+ measurementResults.add(
+ new MeasurementResult(title, taskTitle, elapsedMilliseconds));
+ return result;
+}

Powered by Google App Engine
This is Rietveld 408576698