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.
hmz007 36ed224bac
Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a)
1 year ago
..
gen Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
include Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
regen Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
.gitignore Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
Android.bp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
README.md Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
gen_bench.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
linker_reloc_bench.cpp Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago
run_bench_with_ninja.sh Rockchip Anroid14_SDK 20240628-rkr5 (2556df1a) 1 year ago

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