Open Broadcaster Software
Free, open source software for live streaming and recording
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
profiler.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "base.h"
4 #include "darray.h"
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 typedef struct profiler_snapshot profiler_snapshot_t;
11 typedef struct profiler_snapshot_entry profiler_snapshot_entry_t;
13 
14 /* ------------------------------------------------------------------------- */
15 /* Profiling */
16 
17 EXPORT void profile_register_root(const char *name,
18  uint64_t expected_time_between_calls);
19 
20 EXPORT void profile_start(const char *name);
21 EXPORT void profile_end(const char *name);
22 
24 
25 /* ------------------------------------------------------------------------- */
26 /* Profiler control */
27 
28 EXPORT void profiler_start(void);
29 EXPORT void profiler_stop(void);
30 
33 
34 EXPORT void profiler_free(void);
35 
36 /* ------------------------------------------------------------------------- */
37 /* Profiler name storage */
38 
39 typedef struct profiler_name_store profiler_name_store_t;
40 
43 
44 #ifndef _MSC_VER
45 #define PRINTFATTR(f, a) __attribute__((__format__(__printf__, f, a)))
46 #else
47 #define PRINTFATTR(f, a)
48 #endif
49 
50 PRINTFATTR(2, 3)
52  const char *format, ...);
53 
54 #undef PRINTFATTR
55 
56 /* ------------------------------------------------------------------------- */
57 /* Profiler data access */
58 
62 };
63 
64 typedef DARRAY(profiler_time_entry_t) profiler_time_entries_t;
65 
66 typedef bool (*profiler_entry_enum_func)(void *context,
68 
71 
73  const char *filename);
75  const char *filename);
76 
79  profiler_entry_enum_func func, void *context);
80 
81 typedef bool (*profiler_name_filter_func)(void *data, const char *name,
82  bool *remove);
84  profiler_name_filter_func func, void *data);
85 
89  profiler_entry_enum_func func, void *context);
90 
93 
94 EXPORT profiler_time_entries_t *profiler_snapshot_entry_times(
102 
103 EXPORT profiler_time_entries_t *profiler_snapshot_entry_times_between_calls(
113 
114 #ifdef __cplusplus
115 }
116 #endif
EXPORT void profile_snapshot_free(profiler_snapshot_t *snap)
struct profiler_snapshot profiler_snapshot_t
Definition: profiler.h:10
EXPORT profiler_time_entries_t * profiler_snapshot_entry_times_between_calls(profiler_snapshot_entry_t *entry)
EXPORT profiler_name_store_t * profiler_name_store_create(void)
EXPORT size_t profiler_snapshot_num_roots(profiler_snapshot_t *snap)
EXPORT uint64_t profiler_snapshot_entry_overall_between_calls_count(profiler_snapshot_entry_t *entry)
bool(* profiler_entry_enum_func)(void *context, profiler_snapshot_entry_t *entry)
Definition: profiler.h:66
EXPORT void profile_register_root(const char *name, uint64_t expected_time_between_calls)
typedef DARRAY(profiler_time_entry_t) profiler_time_entries_t
EXPORT profiler_snapshot_t * profile_snapshot_create(void)
EXPORT size_t profiler_snapshot_num_children(profiler_snapshot_entry_t *entry)
EXPORT void profiler_free(void)
uint64_t time_delta
Definition: profiler.h:60
EXPORT void profile_end(const char *name)
EXPORT bool profiler_snapshot_dump_csv(const profiler_snapshot_t *snap, const char *filename)
unsigned __int64 uint64_t
Definition: vc_stdint.h:33
EXPORT uint64_t profiler_snapshot_entry_min_time(profiler_snapshot_entry_t *entry)
uint64_t count
Definition: profiler.h:61
EXPORT void profiler_name_store_free(profiler_name_store_t *store)
EXPORT uint64_t profiler_snapshot_entry_max_time_between_calls(profiler_snapshot_entry_t *entry)
EXPORT void profiler_snapshot_enumerate_roots(profiler_snapshot_t *snap, profiler_entry_enum_func func, void *context)
EXPORT const char * profiler_snapshot_entry_name(profiler_snapshot_entry_t *entry)
EXPORT void profile_start(const char *name)
EXPORT void profiler_snapshot_enumerate_children(profiler_snapshot_entry_t *entry, profiler_entry_enum_func func, void *context)
#define EXPORT
Definition: c99defs.h:49
struct profiler_snapshot_entry profiler_snapshot_entry_t
Definition: profiler.h:11
EXPORT void profiler_start(void)
EXPORT uint64_t profiler_snapshot_entry_min_time_between_calls(profiler_snapshot_entry_t *entry)
EXPORT uint64_t profiler_snapshot_entry_expected_time_between_calls(profiler_snapshot_entry_t *entry)
EXPORT const char * profile_store_name(profiler_name_store_t *store, const char *format,...)
EXPORT void profile_reenable_thread(void)
EXPORT void profiler_print_time_between_calls(profiler_snapshot_t *snap)
EXPORT void profiler_print(profiler_snapshot_t *snap)
EXPORT bool profiler_snapshot_dump_csv_gz(const profiler_snapshot_t *snap, const char *filename)
bool(* profiler_name_filter_func)(void *data, const char *name, bool *remove)
Definition: profiler.h:81
EXPORT uint64_t profiler_snapshot_entry_overall_count(profiler_snapshot_entry_t *entry)
EXPORT void profiler_stop(void)
EXPORT uint64_t profiler_snapshot_entry_max_time(profiler_snapshot_entry_t *entry)
#define PRINTFATTR(f, a)
Definition: profiler.h:45
EXPORT void profiler_snapshot_filter_roots(profiler_snapshot_t *snap, profiler_name_filter_func func, void *data)
EXPORT profiler_time_entries_t * profiler_snapshot_entry_times(profiler_snapshot_entry_t *entry)
Definition: profiler.h:59
struct profiler_name_store profiler_name_store_t
Definition: profiler.h:39