Blender  V3.3
PIL_time_utildefines.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2013 Blender Foundation. All rights reserved. */
3 
9 #pragma once
10 
11 #include "BLI_utildefines.h" /* for AT */
12 #include "PIL_time.h" /* for PIL_check_seconds_timer */
13 
14 #define TIMEIT_START(var) \
15  { \
16  double _timeit_##var = PIL_check_seconds_timer(); \
17  printf("time start (" #var "): " AT "\n"); \
18  fflush(stdout); \
19  { \
20  (void)0
21 
25 #define TIMEIT_VALUE(var) (float)(PIL_check_seconds_timer() - _timeit_##var)
26 
27 #define TIMEIT_VALUE_PRINT(var) \
28  { \
29  printf("time update (" #var \
30  "): %.6f" \
31  " " AT "\n", \
32  TIMEIT_VALUE(var)); \
33  fflush(stdout); \
34  } \
35  (void)0
36 
37 #define TIMEIT_END(var) \
38  } \
39  printf("time end (" #var \
40  "): %.6f" \
41  " " AT "\n", \
42  TIMEIT_VALUE(var)); \
43  fflush(stdout); \
44  } \
45  (void)0
46 
52 #define TIMEIT_START_AVERAGED(var) \
53  { \
54  static float _sum_##var = 0.0f; \
55  static float _num_##var = 0.0f; \
56  double _timeit_##var = PIL_check_seconds_timer(); \
57  printf("time start (" #var "): " AT "\n"); \
58  fflush(stdout); \
59  { \
60  (void)0
61 
62 #define TIMEIT_AVERAGED_VALUE(var) (_num##var ? (_sum_##var / _num_##var) : 0.0f)
63 
64 #define TIMEIT_END_AVERAGED(var) \
65  } \
66  const float _delta_##var = TIMEIT_VALUE(var); \
67  _sum_##var += _delta_##var; \
68  _num_##var++; \
69  printf("time end (" #var \
70  "): %.6f" \
71  " " AT "\n", \
72  _delta_##var); \
73  printf("time averaged (" #var "): %.6f (total: %.6f, in %d runs)\n", \
74  (_sum_##var / _num_##var), \
75  _sum_##var, \
76  (int)_num_##var); \
77  fflush(stdout); \
78  } \
79  (void)0
80 
85 #define TIMEIT_BENCH(expr, id) \
86  { \
87  TIMEIT_START(id); \
88  (expr); \
89  TIMEIT_END(id); \
90  } \
91  (void)0
92 
93 #define TIMEIT_BLOCK_INIT(id) double _timeit_var_##id = 0
94 
95 #define TIMEIT_BLOCK_START(id) \
96  { \
97  double _timeit_block_start_##id = PIL_check_seconds_timer(); \
98  { \
99  (void)0
100 
101 #define TIMEIT_BLOCK_END(id) \
102  } \
103  _timeit_var_##id += (PIL_check_seconds_timer() - _timeit_block_start_##id); \
104  } \
105  (void)0
106 
107 #define TIMEIT_BLOCK_STATS(id) \
108  { \
109  printf("%s time (in seconds): %f\n", #id, _timeit_var_##id); \
110  fflush(stdout); \
111  } \
112  (void)0
Platform independent time functions.