Skip to content

Commit b14b9e7

Browse files
authored
Removing global glz::trace (#1544)
* Removing global glz::trace * Remove unnecessary write_file_trace * Remove disabled option * Revert "Remove disabled option" This reverts commit 9ec37aa. * disabled handling in scopers
1 parent 921f45f commit b14b9e7

File tree

2 files changed

+56
-90
lines changed

2 files changed

+56
-90
lines changed

include/glaze/trace/trace.hpp

+45-81
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,51 @@ namespace glz
157157
std::ignore = glz::write_json(std::forward<Args>(args)..., event->args.str);
158158
}
159159
}
160+
161+
// Automatically adds the end event when it leave scope
162+
struct duration_scoper final
163+
{
164+
trace& tr;
165+
166+
duration_scoper(trace& tr, const std::string_view name) noexcept : tr(tr), name(name) {
167+
if (not tr.disabled) {
168+
tr.begin(name);
169+
}
170+
}
171+
~duration_scoper() noexcept {
172+
if (not tr.disabled) {
173+
tr.end(name);
174+
}
175+
}
176+
177+
const std::string_view name{};
178+
};
179+
180+
struct async_scoper final
181+
{
182+
trace& tr;
183+
184+
async_scoper(trace& tr, const std::string_view name) noexcept : tr(tr), name(name) {
185+
if (not tr.disabled) {
186+
tr.begin(name);
187+
}
188+
}
189+
~async_scoper() noexcept {
190+
if (not tr.disabled) {
191+
tr.end(name);
192+
}
193+
}
194+
195+
const std::string_view name{};
196+
};
197+
198+
duration_scoper scope(const std::string_view name) {
199+
return {*this, name};
200+
}
201+
202+
async_scoper async_scope(const std::string_view name) {
203+
return {*this, name};
204+
}
160205
};
161206

162207
template <>
@@ -165,85 +210,4 @@ namespace glz
165210
using T = trace;
166211
static constexpr auto value = object(&T::traceEvents, &T::displayTimeUnit);
167212
};
168-
169-
// Global approach to user a trace
170-
// instead of calling: my_trace.begin("my event");
171-
// you can call: glz::trace_begin("my event");
172-
template <size_t I>
173-
inline trace& global_trace() noexcept
174-
{
175-
static trace trc{};
176-
return trc;
177-
}
178-
179-
template <size_t I>
180-
inline void enable_trace() noexcept
181-
{
182-
global_trace<0>().disabled = false;
183-
}
184-
185-
template <size_t I>
186-
inline void disable_trace() noexcept
187-
{
188-
global_trace<0>().disabled = true;
189-
}
190-
191-
template <opts Opts = opts{}>
192-
[[nodiscard]] error_ctx write_file_trace(const std::string& file_name, auto&& buffer) noexcept
193-
{
194-
const auto ec = write<set_json<Opts>()>(global_trace<0>(), buffer);
195-
if (bool(ec)) [[unlikely]] {
196-
return ec;
197-
}
198-
return {buffer_to_file(buffer, file_name)};
199-
}
200-
201-
template <class... Args>
202-
requires(sizeof...(Args) <= 1)
203-
constexpr void trace_begin(const std::string_view name, Args&&... args) noexcept
204-
{
205-
auto& trc = global_trace<0>();
206-
trc.begin(name, std::forward<Args>(args)...);
207-
}
208-
209-
template <class... Args>
210-
requires(sizeof...(Args) <= 1)
211-
constexpr void trace_end(const std::string_view name, Args&&... args) noexcept
212-
{
213-
auto& trc = global_trace<0>();
214-
trc.end(name, std::forward<Args>(args)...);
215-
}
216-
217-
template <class... Args>
218-
requires(sizeof...(Args) <= 1)
219-
constexpr void trace_async_begin(const std::string_view name, Args&&... args) noexcept
220-
{
221-
auto& trc = global_trace<0>();
222-
trc.async_begin(name, std::forward<Args>(args)...);
223-
}
224-
225-
template <class... Args>
226-
requires(sizeof...(Args) <= 1)
227-
constexpr void trace_async_end(const std::string_view name, Args&&... args) noexcept
228-
{
229-
auto& trc = global_trace<0>();
230-
trc.async_end(name, std::forward<Args>(args)...);
231-
}
232-
233-
// Automatically adds the end event when it leave scope
234-
struct duration_trace final
235-
{
236-
duration_trace(const std::string_view name) noexcept : name(name) { trace_begin(name); }
237-
~duration_trace() noexcept { trace_end(name); }
238-
239-
const std::string_view name{};
240-
};
241-
242-
struct async_trace final
243-
{
244-
async_trace(const std::string_view name) noexcept : name(name) { trace_async_begin(name); }
245-
~async_trace() noexcept { trace_async_end(name); }
246-
247-
const std::string_view name{};
248-
};
249213
}

tests/beve_test/beve_test.cpp

+11-9
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
#include "glaze/trace/trace.hpp"
2525
#include "ut/ut.hpp"
2626

27+
inline glz::trace trace{};
28+
2729
struct my_struct
2830
{
2931
int i = 287;
@@ -413,7 +415,7 @@ void bench()
413415
{
414416
using namespace ut;
415417
"bench"_test = [] {
416-
glz::trace_begin("bench");
418+
trace.begin("bench");
417419
std::cout << "\nPerformance regresion test: \n";
418420
#ifdef NDEBUG
419421
size_t repeat = 100000;
@@ -446,7 +448,7 @@ void bench()
446448
mbytes_per_sec = repeat * buffer.size() / (duration * 1048576);
447449
std::cout << "from_beve: " << duration << " s, " << mbytes_per_sec << " MB/s"
448450
<< "\n";
449-
glz::trace_end("bench");
451+
trace.end("bench");
450452
};
451453
}
452454

@@ -1166,7 +1168,7 @@ suite signal_tests = [] {
11661168

11671169
suite vector_tests = [] {
11681170
"std::vector<uint8_t>"_test = [] {
1169-
glz::duration_trace trace{"test std::vector<uint8_t>"};
1171+
auto scoped = trace.scope("test std::vector<uint8_t>");
11701172
std::string s;
11711173
static constexpr auto n = 10000;
11721174
std::vector<uint8_t> v(n);
@@ -1189,7 +1191,7 @@ suite vector_tests = [] {
11891191
};
11901192

11911193
"std::vector<uint16_t>"_test = [] {
1192-
glz::duration_trace trace{"test std::vector<uint16_t>"};
1194+
auto scoped = trace.scope("test std::vector<uint16_t>");
11931195
std::string s;
11941196
static constexpr auto n = 10000;
11951197
std::vector<uint16_t> v(n);
@@ -1213,7 +1215,7 @@ suite vector_tests = [] {
12131215
};
12141216

12151217
"std::vector<float>"_test = [] {
1216-
glz::async_trace trace{"test std::vector<float>"};
1218+
auto scoped = trace.async_scope("test std::vector<float>");
12171219
std::string s;
12181220
static constexpr auto n = 10000;
12191221
std::vector<float> v(n);
@@ -1237,7 +1239,7 @@ suite vector_tests = [] {
12371239
};
12381240

12391241
"std::vector<double>"_test = [] {
1240-
glz::async_trace trace{"test std::vector<double>"};
1242+
auto scoped = trace.async_scope("test std::vector<double>");
12411243
std::string s;
12421244
static constexpr auto n = 10000;
12431245
std::vector<double> v(n);
@@ -2402,15 +2404,15 @@ suite pair_ranges_tests = [] {
24022404

24032405
int main()
24042406
{
2405-
glz::trace_begin("binary_test");
2407+
trace.begin("binary_test");
24062408
write_tests();
24072409
bench();
24082410
test_partial();
24092411
file_include_test();
24102412
container_types();
24112413

2412-
glz::trace_end("binary_test");
2413-
const auto ec = glz::write_file_trace("binary_test.trace.json", std::string{});
2414+
trace.end("binary_test");
2415+
const auto ec = glz::write_file_json(trace, "binary_test.trace.json", std::string{});
24142416
if (ec) {
24152417
std::cerr << "trace output failed\n";
24162418
}

0 commit comments

Comments
 (0)