| /* | |
| * Copyright 2005. Rene Rivera | |
| * Distributed under the Boost Software License, Version 1.0. | |
| * (See accompanying file LICENSE_1_0.txt or copy at | |
| * http://www.boost.org/LICENSE_1_0.txt) | |
| */ | |
| typedef struct profile_info | |
| { | |
| /* name of rule being called */ | |
| OBJECT * name; | |
| /* cumulative time spent in rule */ | |
| clock_t cumulative; | |
| /* time spent in rule proper */ | |
| clock_t net; | |
| /* number of time rule was entered */ | |
| unsigned long num_entries; | |
| /* number of the times this function is present in stack */ | |
| unsigned long stack_count; | |
| /* bytes of memory allocated by the call */ | |
| unsigned long memory; | |
| } profile_info; | |
| typedef struct profile_frame | |
| { | |
| /* permanent storage where data accumulates */ | |
| profile_info * info; | |
| /* overhead for profiling in this call */ | |
| clock_t overhead; | |
| /* time of last entry to rule */ | |
| clock_t entry_time; | |
| /* stack frame of caller */ | |
| struct profile_frame * caller; | |
| /* time spent in subrules */ | |
| clock_t subrules; | |
| } profile_frame; | |
| profile_frame * profile_init( OBJECT * rulename, profile_frame * ); | |
| void profile_enter( OBJECT * rulename, profile_frame * ); | |
| void profile_memory( long mem ); | |
| void profile_exit( profile_frame * ); | |
| void profile_dump(); | |