release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Search | Go
Wiki > Main > SourceProfiling (r3)

Profiling Rockbox

(from docs/TECH)

Rockbox contains a profiling system which can be used to monitor call count and time in function for a specific set of functions on a single thread. This can be used to optimize frequently-called functions or code blocks.

To use this functionality:
  1. Configure a developer build with profiling support.
  2. Make sure that the functions of interest will be compiled with the PROFILE_OPTS added to their CFLAGS
  3. On the same thread as these functions will be run, surround the relevent running time with calls to profile_thread and profstop. (For codecs, this can be done in the codec.c file for example)
  4. Compile and run the code on the target, after the section to be profiled exits (when profstop is called) a profile.out file will be written to the player's root. The test_codec program is a good way to do this.
  5. Use the tools/profile_reader/profile_reader.pl script to convert the profile.out into a human readable format. This script requires the relevant map files, the objdump version to use, and object (or elf or library) files created in the build. (ex: /tools/profile_reader/profile_reader.pl profile.out arm-elf-objdump wma.map wma.elf 1)

There is also a profile_comparator.pl script which can compare two profile runs as output by the above script to show percent change from optimization

profile_reader.pl requires a recent binutils that can automatically handle target object files, or objdump in path to be the target-objdump.

profile_reader.pl works on ARM and Coldfire, and may work on other targets.
Edit | Attach | Print version | History: r4 < r3 < r2 < r1 | Backlinks | View wiki text | More topic actions...
r3 - 28 Jul 2008 - 22:47:05 - MichaelGiacomelli
Copyright by the contributing authors.