|
|
||
|---|---|---|
| .. | ||
| gen | ||
| include | ||
| regen | ||
| .gitignore | ||
| Android.bp | ||
| README.md | ||
| gen_bench.sh | ||
| linker_reloc_bench.cpp | ||
| run_bench_with_ninja.sh | ||
README.md
Dynamic Linker Relocation Benchmark
This benchmark measures the time spent in the dynamic linker to load a large set
of shared objects with many symbols and relocations. It mimics the work involved
in loading a fixed version of libandroid_servers.so.
Running the benchmark
To run the benchmark, build the linker-reloc-bench target, sync data, and
run the benchmark from /data/benchmarktest[64]/linker-reloc-bench.
There is also a run_bench_with_ninja.sh script that uses the
gen_bench.py --ninja mode to generate a benchmark. It's useful for
experimentation. The --cc and --linker flags allow swapping out different
static and dynamic linkers.
Regenerating the synthetic benchmark
regen/dump_relocs.py scans an ELF file and its dependencies, outputting a JSON
dump, then regen/gen_bench.py processes the JSON file into benchmark code.
gen_bench.py has two modes:
- (default) generate Android.bp and source files
- with
--ninja: generate a build.ninja instead, and build a set of ELF file outputs