Name Date Size #Lines LOC

..--

gen/H25-Apr-2025-555,626555,278

include/H25-Apr-2025-6929

regen/H25-Apr-2025-847602

.gitignoreH A D25-Apr-202529 43

Android.bpH A D25-Apr-20253.1 KiB9381

README.mdH A D25-Apr-20251 KiB2618

gen_bench.shH A D25-Apr-20252.6 KiB8447

linker_reloc_bench.cppH A D25-Apr-20252.2 KiB5817

run_bench_with_ninja.shH A D25-Apr-20254.5 KiB155102

README.md

1# Dynamic Linker Relocation Benchmark
2
3This benchmark measures the time spent in the dynamic linker to load a large set
4of shared objects with many symbols and relocations. It mimics the work involved
5in loading a fixed version of `libandroid_servers.so`.
6
7## Running the benchmark
8
9To run the benchmark, build the `linker-reloc-bench` target, sync `data`, and
10run the benchmark from `/data/benchmarktest[64]/linker-reloc-bench`.
11
12There is also a `run_bench_with_ninja.sh` script that uses the
13`gen_bench.py --ninja` mode to generate a benchmark. It's useful for
14experimentation. The `--cc` and `--linker` flags allow swapping out different
15static and dynamic linkers.
16
17## Regenerating the synthetic benchmark
18
19`regen/dump_relocs.py` scans an ELF file and its dependencies, outputting a JSON
20dump, then `regen/gen_bench.py` processes the JSON file into benchmark code.
21`gen_bench.py` has two modes:
22
23 - (default) generate Android.bp and source files
24 - with `--ninja`: generate a build.ninja instead, and build a set of ELF file
25   outputs
26