AOT code size analysis

The Dart VM's AOT compiler has support for emitting binary size information for all the code that gets generated. This information can then be visualized.

Telling the AOT compiler to generate binary size information

Our AOT compiler accepts an extra --print-instructions-sizes-to=sizes.json flag. If supplied the AOT compiler will emit binary size information for all generated functions to sizes.json.

This flag can be passed to gen_snapshot directly, or to the various wrapper scripts (e.g. pkg/vm/tool/precompiler2):

% tools/build.py -mrelease -ax64 runtime_kernel dart_precompiled_runtime
% pkg/vm/tool/precompiler2 --print-instructions-sizes-to=hello_sizes.json hello.dart hello.dart.aot

Visualizing the information from the binary size json file

To visualize the information emitted by the AOT compiler one can use our binary size analysis tool:

% dart pkg/vm/bin/run_binary_size_analysis.dart hello_sizes.json hello_sizes
Generated file:///.../sdk/hello_sizes/index.html
% chrome hello_sizes/index.html