1#[macro_export]
2macro_rules! timer_start_info {
3 ($name:ident) => {
4 #[allow(non_snake_case)]
5 let $name = std::time::Instant::now();
6 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
7 let escape_in = match is_terminal {
8 true => "\x1b[2m",
9 false => "",
10 };
11 let escape_out = match is_terminal {
12 true => "\x1b[37;0m",
13 false => "",
14 };
15 tracing::info!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
16 };
17 ($name:ident, $($arg:tt)+) => {
18 #[allow(non_snake_case)]
19 let $name = std::time::Instant::now();
20 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
21 let escape_in = match is_terminal {
22 true => "\x1b[2m",
23 false => "",
24 };
25 let escape_out = match is_terminal {
26 true => "\x1b[37;0m",
27 false => "",
28 };
29 tracing::info!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
30 };
31}
32
33#[macro_export]
34macro_rules! timer_stop_and_log_info {
35 ($name:ident) => {
36 #[allow(non_snake_case)]
37 let $name = std::time::Instant::now() - $name;
38 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
39 let escape_in = match is_terminal {
40 true => "\x1b[2m",
41 false => "",
42 };
43 let escape_out = match is_terminal {
44 true => "\x1b[37;0m",
45 false => "",
46 };
47 tracing::info!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
48 };
49 ($name:ident, $($arg:tt)+) => {
50 #[allow(non_snake_case)]
51 let $name = std::time::Instant::now() - $name;
52 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
53 let escape_in = match is_terminal {
54 true => "\x1b[2m",
55 false => "",
56 };
57 let escape_out = match is_terminal {
58 true => "\x1b[37;0m",
59 false => "",
60 };
61 tracing::info!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
62 };
63}
64
65#[macro_export]
66macro_rules! timer_start_debug {
67 ($name:ident) => {
68 #[allow(non_snake_case)]
69 let $name = std::time::Instant::now();
70 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
71 let escape_in = match is_terminal {
72 true => "\x1b[2m",
73 false => "",
74 };
75 let escape_out = match is_terminal {
76 true => "\x1b[37;0m",
77 false => "",
78 };
79 tracing::debug!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
80 };
81 ($name:ident, $($arg:tt)+) => {
82 #[allow(non_snake_case)]
83 let $name = std::time::Instant::now();
84 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
85 let escape_in = match is_terminal {
86 true => "\x1b[2m",
87 false => "",
88 };
89 let escape_out = match is_terminal {
90 true => "\x1b[37;0m",
91 false => "",
92 };
93 tracing::debug!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
94 };
95}
96
97#[macro_export]
98macro_rules! timer_stop_and_log_debug {
99 ($name:ident) => {
100 #[allow(non_snake_case)]
101 let $name = std::time::Instant::now() - $name;
102 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
103 let escape_in = match is_terminal {
104 true => "\x1b[2m",
105 false => "",
106 };
107 let escape_out = match is_terminal {
108 true => "\x1b[37;0m",
109 false => "",
110 };
111 tracing::debug!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
112 };
113 ($name:ident, $($arg:tt)+) => {
114 #[allow(non_snake_case)]
115 let $name = std::time::Instant::now() - $name;
116 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
117 let escape_in = match is_terminal {
118 true => "\x1b[2m",
119 false => "",
120 };
121 let escape_out = match is_terminal {
122 true => "\x1b[37;0m",
123 false => "",
124 };
125 tracing::debug!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
126 };
127}
128
129#[macro_export]
130macro_rules! timer_start_trace {
131 ($name:ident) => {
132 #[allow(non_snake_case)]
133 let $name = std::time::Instant::now();
134 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
135 let escape_in = match is_terminal {
136 true => "\x1b[2m",
137 false => "",
138 };
139 let escape_out = match is_terminal {
140 true => "\x1b[37;0m",
141 false => "",
142 };
143 tracing::trace!("{}>>> {}{}", escape_in, stringify!($name), escape_out);
144 };
145 ($name:ident, $($arg:tt)+) => {
146 #[allow(non_snake_case)]
147 let $name = std::time::Instant::now();
148 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
149 let escape_in = match is_terminal {
150 true => "\x1b[2m",
151 false => "",
152 };
153 let escape_out = match is_terminal {
154 true => "\x1b[37;0m",
155 false => "",
156 };
157 tracing::trace!("{}>>> {}{}", escape_in, format!($($arg)+), escape_out);
158 };
159}
160
161#[macro_export]
162macro_rules! timer_stop_and_log_trace {
163 ($name:ident) => {
164 #[allow(non_snake_case)]
165 let $name = std::time::Instant::now() - $name;
166 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
167 let escape_in = match is_terminal {
168 true => "\x1b[2m",
169 false => "",
170 };
171 let escape_out = match is_terminal {
172 true => "\x1b[37;0m",
173 false => "",
174 };
175 tracing::trace!("{}<<< {} ({}ms){}", escape_in, stringify!($name), $name.as_millis(), escape_out);
176 };
177 ($name:ident, $($arg:tt)+) => {
178 #[allow(non_snake_case)]
179 let $name = std::time::Instant::now() - $name;
180 let is_terminal = std::io::IsTerminal::is_terminal(&std::io::stdout()) && std::env::var("NO_COLOR").is_err();
181 let escape_in = match is_terminal {
182 true => "\x1b[2m",
183 false => "",
184 };
185 let escape_out = match is_terminal {
186 true => "\x1b[37;0m",
187 false => "",
188 };
189 tracing::trace!("{}<<< {} ({}ms){}", escape_in, format!($($arg)+), $name.as_millis(), escape_out);
190 };
191}