Predict and monitor timing behavior during code development

TimingProfiler helps you identify application parts that cause unsatisfactory execution times. It delivers results as soon as there is compiled code, and thus can be used very early in the development process, when measurements on physical hardware are costly or plain impossible.

This makes TimingProfiler ideally suited for constantly monitoring timing behavior during software development and in model-based development environments.

The dilemma

  • Tests on physical hardware are typically based on code instrumentation, require elaborate technical equipment and cause significant effort. Worse still, they only provide feedback about the average-case behavior. 
  • For obtaining worst-case guarantees, static analysis tools such as aiT WCET Analyzers are available that do not require access to the physi­cal hardware and can be easily automa­ted. However, they are typically used late in the development and have to take into account the software and hardware configuration in great detail.

The solution

TimingProfiler has been specifically developed to apply static-analysis techniques at early devel­opment stages, providing quick feed­back about the timing behavior. It takes executable code as input and explores the timing of all potential execution paths of each task on a generic processor with the target instruction set, e.g. PowerPC.

The goal is not to give precise worst-case guarantees, but to enable development of appli­ca­tions in a timing-conscious way without cumber­some measurements on physical hardware. In fact, the analysis is appli­cable when no hardware is available yet, or the application is not mature enough for measurements.

No user interaction is required; information not statically avail­able is filled in by specialized heu­ristics. Hence, the resulting execution time is a realistic worst-case scenario, albeit not a guar­antee as provided by aiT.

Your benefits

  • TimingProfiler gives detailed information about the execution time and time-critical paths.
  • The analysis is purely static. No access to physical hardware and no code instrumentation are required.
  • The analyzer does not need to be stimulated with concrete inputs. By default, it takes all potential inputs into account.
  • Nevertheless, the analysis can be restricted to specific execution scenarios if desired.
  • The tool shows call and control flow graphs, and displays all relevant information about the executable.
  • Hotspots and bottlenecks can be identified at early development stages so that late-stage integration problems can be avoided.
  • This provides for easy integration into the development process, and enables application in continuous test and integration frameworks.
  • TimingProfiler can be seamlessly coupled with StackAnalyzer to additionally take the stack behavior into account, providing a unified approach to addressing resource usage.

Why do you need TimingProfiler?

  • TimingProfiler helps address timing behavior continuously during development from early stages on.
  • Developers can immediately understand the timing effects of their implementation decisions.
  • TimingProfiler visualizes the call and control flow graph with timing information and displays relevant information about the executable.
  • TimingProfiler computes worst-case execution time estimates for a slightly idealized model of the target processor. In contrast to aiT, it cannot derive guaranteed timing bounds, but efficiently computes timing estimates.
  • No access to physical hardware and no code instrumentation are required.
  • TimingProfiler automatically explores all execution paths in a program for all potential inputs.
  • No effort is needed to set up and execute elaborate timing measurements.
  • TimingProfiler can be easily integrated into the development process and used in continuous test and integration frameworks.
  • Developers can identify bottlenecks early and avoid late-stage integration problems.

Request Info