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