OLD | NEW |
1 # Tools for analyzing Chrome's binary size | 1 # Tools for analyzing Chrome's binary size |
2 | 2 |
3 # Super Size | 3 # Super Size |
4 | 4 |
5 Collect, archive, and analyze Chrome's binary size. | 5 Collect, archive, and analyze Chrome's binary size. |
6 | 6 |
7 ## "archive" | 7 ## "archive" |
8 | 8 |
9 Collect size information and dump it into a `.size` file. Mainly consists of | 9 Collect size information and dump it into a `.size` file. Mainly consists of |
10 symbol information parsed from a linker .map file. | 10 symbol information parsed from a linker .map file. |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 # Build and diff contiguous revs in range OTHERREV..REV for src/v8. | 75 # Build and diff contiguous revs in range OTHERREV..REV for src/v8. |
76 tools/binary_size/diagnose_apk_bloat.py REV --reference-rev OTHERREV --subre
po v8 --all | 76 tools/binary_size/diagnose_apk_bloat.py REV --reference-rev OTHERREV --subre
po v8 --all |
77 | 77 |
78 # Display detailed usage info (there are many options). | 78 # Display detailed usage info (there are many options). |
79 tools/binary_size/diagnose_apk_bloat.py -h | 79 tools/binary_size/diagnose_apk_bloat.py -h |
80 | 80 |
81 # Roadmap for Super Size: | 81 # Roadmap for Super Size: |
82 | 82 |
83 Tracked in https://crbug.com/681694 | 83 Tracked in https://crbug.com/681694 |
84 | 84 |
| 85 1. Better Linux support (clang/lld). |
85 1. More `archive` features: | 86 1. More `archive` features: |
86 | 87 |
87 * Find out more about 0xffffffffffffffff addresses, and why such large | 88 * Find out more about 0xffffffffffffffff addresses, and why such large |
88 gaps exist after them. | 89 gaps exist after them. |
89 * Use nm to get the full list of symbols that share the same address. | |
90 * Collect java symbol information | 90 * Collect java symbol information |
91 * Collect .pak file information (using .o.whitelist files) | 91 * Collect .pak file information (using .o.whitelist files) |
92 * Collect .apk entry information | 92 * Collect .apk entry information |
93 | 93 |
94 1. More `console` features: | 94 1. More `console` features: |
95 | 95 |
96 * Template Symbols - shows when templates lead to code bloat. | 96 * Template Symbols - shows when templates lead to code bloat. |
97 * Duplicate Symbols - shows when statics in headers are an issue. | 97 * Duplicate Symbols - shows when statics in headers are an issue. |
98 * Overloaded Symbols - shows when overloads are excessive. | 98 * Overloaded Symbols - shows when overloads are excessive. |
99 * Per-class / namespace size (no way to distinguish class vs namespace). | 99 * Per-class / namespace size (no way to distinguish class vs namespace). |
100 * Per-Chrome package (Chrome-specific grouping. e.g. name prefixes). | |
101 * CSV output (for pasting into a spreadsheet). | 100 * CSV output (for pasting into a spreadsheet). |
| 101 * Make Where\*() methods filter recursively on already-grouped SymbolGroups. |
| 102 * Add symbols.SplitByNamespace() - which will be like GroupByNamespace, but be |
| 103 recursive. |
102 | 104 |
103 1. More `html_report` features: | 105 1. More `html_report` features: |
104 | 106 |
105 * Break down by other groupings (e.g. create from nested `SymbolGroups`) | 107 * Break down by other groupings (Create from result of SplitByNamespace()) |
| 108 * Render as simple tree view rather than 2d boxes |
106 | 109 |
107 1. Integrate with `resource_sizes.py` so that it tracks size of major | 110 1. Integrate with `resource_sizes.py` so that it tracks size of major |
108 components separately: chrome vs blink vs skia vs v8. | 111 components separately: chrome vs blink vs skia vs v8. |
109 1. Speed up some steps (like normalizing names) via multiprocessing. | |
110 1. Add dependency graph info, perhaps just on a per-file basis. | 112 1. Add dependency graph info, perhaps just on a per-file basis. |
111 | |
112 # Roadmap for diagnose_apk_bloat.py: | |
113 1. More `diagnose_apk_bloat.py` features: | |
114 | |
115 * Add more diff types (pak files, Java symbols). | |
OLD | NEW |