You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.1 KiB

Benchmarking Build Performance of Android Clang

Build performance is a vital metric as it affects development velocity, CI resource usage and the headroom for more sophisticated optimisation techniques. We heavily optimise Android Clang for peak performance.

The Android Clang's compiler wrapper provides a convenient way to analyse the time spent building the Android platform. It can be produced by running:

rm -f /tmp/rusage.txt
TOOLCHAIN_RUSAGE_OUTPUT=/tmp/rusage.txt m -j{processor count / 4}

We decrease the parallelism to reduce noise caused by resource contention. Also make sure RBE is off for the build. The resulting rusage.txt can be analysed with the following Python script:

#! /usr/bin/env python3

import json
import sys

total_clang_time = 0
total_clang_tidy_time = 0

with open(sys.argv[1], 'r') as rusage:
  for line in rusage:
    data = json.loads(line)
    if 'clang-tidy' in data['compiler']:
      total_clang_tidy_time += data['elapsed_real_time']
    else:
      total_clang_time += data['elapsed_real_time']

print('Total clang time', total_clang_time)
print('Total clang-tidy time', total_clang_tidy_time)