// 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.

// @dart = 2.9

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