Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "TPTP Java Profilers Anatomy"

(Call Graph Profiler)
Line 18: Line 18:
  
 
=== Call Graph Profiler  ===
 
=== Call Graph Profiler  ===
 +
There are two modes which can be applied to Call Graph profiling - execution details and aggregated. The difference for users between these two modes is in execution details mode provides more detailed profiling information, and it can render call graph in workbench. However, it will run slower than aggregated mode. To support these two modes, different implementations are used in call graph profiler design.
 +
 +
The first difference is data structure used for profiling data storage.
  
 
=== Heap Profiler  ===
 
=== Heap Profiler  ===

Revision as of 03:15, 27 August 2009

Introduction

TPTP provides with not only a profiling framework Martini, but also several Java profilers. Call graph, memory and thread anlysis are three basic profiling scenarios.

Profilers Design Overview

To abstract common operations in diffrent profilers, a class named "CBaseProf" is added. The design pattern Template is used here. BaseProf defines several template methods and subclasses of it need to implement these template methods.

Besides BaseProf, profiling data will be stored for different profiling. We will discuss the data structure of them later. All these profiling data and handlers which point to components outside of profilers such as JPIAgent is stored in a profiling context class named "CProfEnv". 

Different handler classes are added for process different Martini profiling events such as enter a method or a new thread start etc. These classes is packaged with concrete profilers.

Profiliers Anatomy

BaseProf: Base class for Concrete Profilers

ProfEnv: Profiling Environmental Information Storage for Profilers

Call Graph Profiler

There are two modes which can be applied to Call Graph profiling - execution details and aggregated. The difference for users between these two modes is in execution details mode provides more detailed profiling information, and it can render call graph in workbench. However, it will run slower than aggregated mode. To support these two modes, different implementations are used in call graph profiler design.

The first difference is data structure used for profiling data storage.

Heap Profiler

Thread Profiler

ProbekitAgent


<Not Finished yet>...

Back to the top