| // 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); |
| } |
| Component component = loadComponentFromBinary(args[0]); |
| |
| String destination = args[1]; |
| var watch = new Stopwatch()..start(); |
| await writeComponentToBinary(component, destination); |
| int coldTime = watch.elapsedMilliseconds; |
| |
| watch.reset(); |
| int numTrials = 10; |
| for (int i = 0; i < numTrials; ++i) { |
| await writeComponentToBinary(component, destination); |
| } |
| double hotTime = watch.elapsedMilliseconds / numTrials; |
| |
| print('Cold time: $coldTime ms'); |
| print('Hot time: $hotTime ms'); |
| } |