1*7594170eSAndroid Build Coastguard Worker# How to Use 2*7594170eSAndroid Build Coastguard Worker 3*7594170eSAndroid Build Coastguard WorkerThe most basic invocation, e.g. `incremental_build.sh --cujs "modify Android.bp$" -- libc`, is logically 4*7594170eSAndroid Build Coastguard Workerequivalent to 5*7594170eSAndroid Build Coastguard Worker 6*7594170eSAndroid Build Coastguard Worker1. running `m --skip-soong-tests libc` and then 7*7594170eSAndroid Build Coastguard Worker2. parsing `$OUTDIR/soong_metrics`, `$OUTDIR/bp2build_metrics.pb` etc 8*7594170eSAndroid Build Coastguard Worker3. Adding timing-related metrics from step 2 into `out/timing_logs/metrics.csv` 9*7594170eSAndroid Build Coastguard Worker4. Now it's "warmed-up", for each cuj: 10*7594170eSAndroid Build Coastguard Worker 1. apply changes associate with the cuj 11*7594170eSAndroid Build Coastguard Worker 1. repeat steps 1 through 3 12*7594170eSAndroid Build Coastguard Worker 13*7594170eSAndroid Build Coastguard WorkerCUJs are defined in `cuj_catalog.py` 14*7594170eSAndroid Build Coastguard WorkerEach row in `metrics.csv` has the timings of various "phases" of a build. 15*7594170eSAndroid Build Coastguard Worker 16*7594170eSAndroid Build Coastguard WorkerTry `incremental_build.sh --help` and `canoncial_perf.sh --help` for help on 17*7594170eSAndroid Build Coastguard Workerusage. 18*7594170eSAndroid Build Coastguard Worker 19*7594170eSAndroid Build Coastguard Worker## CUJ groups 20*7594170eSAndroid Build Coastguard Worker 21*7594170eSAndroid Build Coastguard WorkerSince most CUJs involve making changes to the source code, we group a number of cujs together such that when any of them is specified, all CUJs