Skip to content

Commit 31e3f82

Browse files
committed
Removing global glz::trace
1 parent 921f45f commit 31e3f82

File tree

2 files changed

+43
-83
lines changed

2 files changed

+43
-83
lines changed

include/glaze/trace/trace.hpp

+32-74
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,35 @@ 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) { tr.begin(name); }
167+
~duration_scoper() noexcept { tr.end(name); }
168+
169+
const std::string_view name{};
170+
};
171+
172+
struct async_scoper final
173+
{
174+
trace& tr;
175+
176+
async_scoper(trace& tr, const std::string_view name) noexcept : tr(tr), name(name) { tr.begin(name); }
177+
~async_scoper() noexcept { tr.end(name); }
178+
179+
const std::string_view name{};
180+
};
181+
182+
duration_scoper scope(const std::string_view name) {
183+
return {*this, name};
184+
}
185+
186+
async_scoper async_scope(const std::string_view name) {
187+
return {*this, name};
188+
}
160189
};
161190

162191
template <>
@@ -165,85 +194,14 @@ namespace glz
165194
using T = trace;
166195
static constexpr auto value = object(&T::traceEvents, &T::displayTimeUnit);
167196
};
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-
197+
191198
template <opts Opts = opts{}>
192-
[[nodiscard]] error_ctx write_file_trace(const std::string& file_name, auto&& buffer) noexcept
199+
[[nodiscard]] error_ctx write_file_trace(const trace& result, const std::string& file_name, auto&& buffer) noexcept
193200
{
194-
const auto ec = write<set_json<Opts>()>(global_trace<0>(), buffer);
201+
const auto ec = write<set_json<Opts>()>(result, buffer);
195202
if (bool(ec)) [[unlikely]] {
196203
return ec;
197204
}
198205
return {buffer_to_file(buffer, file_name)};
199206
}
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-
};
249207
}

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_trace(trace, "binary_test.trace.json", std::string{});
24142416
if (ec) {
24152417
std::cerr << "trace output failed\n";
24162418
}

0 commit comments

Comments
 (0)