Open Broadcaster Software
Free, open source software for live streaming and recording
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)
EXPORT uint64_t profiler_snapshot_entry_overall_count(profiler_snapshot_entry_t *entry)
EXPORT void profiler_stop(void)
bool(* profiler_name_filter_func)(void *data, const char *name, bool *remove)
Definition: profiler.h:81
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