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