| #!/usr/bin/env dart |
| // 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'; |
| |
| /// Builds N copies of the AST for the given component. |
| /// Pass --print-metrics to the Dart VM to measure the memory use. |
| main(List<String> args) { |
| if (args.length == 0) { |
| print('USAGE: ast_membench FILE.dill NUM_COPIES'); |
| exit(1); |
| } |
| String filename = args[0]; |
| |
| const int defaultCopyCount = 10; |
| int copyCount = args.length == 2 ? int.parse(args[1]) : defaultCopyCount; |
| List<Component> keepAlive = <Component>[]; |
| for (int i = 0; i < copyCount; ++i) { |
| keepAlive.add(loadComponentFromBinary(filename)); |
| } |
| |
| print('$copyCount copies built'); |
| |
| if (args.contains('-v')) { |
| // Use of the list for something to avoid premature GC. |
| int size = 0; |
| for (var component in keepAlive) { |
| size += component.libraries.length; |
| } |
| print(size); |
| } |
| } |