Index: test/serialize_bench.dart |
diff --git a/test/serialize_bench.dart b/test/serialize_bench.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f19e1afebe6b56841c573bb32ffc07b81eb175d8 |
--- /dev/null |
+++ b/test/serialize_bench.dart |
@@ -0,0 +1,35 @@ |
+// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+import 'package:kernel/kernel.dart'; |
+import 'dart:io'; |
+ |
+final String usage = ''' |
+Usage: serialize_bench INPUT.dill OUTPUT.dill |
+ |
+Deserialize INPUT and write it back to OUTPUT several times, measuring |
+the time it takes, including I/O time. |
+'''; |
+ |
+main(List<String> args) async { |
+ if (args.length != 2) { |
+ print(usage); |
+ exit(1); |
+ } |
+ Program program = loadProgramFromBinary(args[0]); |
+ |
+ String destination = args[1]; |
+ var watch = new Stopwatch()..start(); |
+ await writeProgramToBinary(program, destination); |
+ int coldTime = watch.elapsedMilliseconds; |
+ |
+ watch.reset(); |
+ int numTrials = 10; |
+ for (int i = 0; i < numTrials; ++i) { |
+ await writeProgramToBinary(program, destination); |
+ } |
+ double hotTime = watch.elapsedMilliseconds / numTrials; |
+ |
+ print('Cold time: $coldTime ms'); |
+ print('Hot time: $hotTime ms'); |
+} |