3 #include <XLink/XLink.h>
9 using namespace std::chrono;
13 XLinkGlobalProfilingLogger::XLinkGlobalProfilingLogger() {}
15 void XLinkGlobalProfilingLogger::enable(
bool en) {
17 if(thr.joinable()) thr.join();
22 thr = std::thread([
this]() {
23 XLinkProf_t lastProf = {};
26 XLinkGetGlobalProfilingData(&prof);
28 long long w = prof.totalWriteBytes - lastProf.totalWriteBytes;
29 long long r = prof.totalReadBytes - lastProf.totalReadBytes;
33 logger::debug(
"Profiling global write speed: {:.2f} MiB/s, read speed: {:.2f} MiB/s, total written: {:.2f} MiB, read: {:.2f} MiB",
34 w / 1024.0f / 1024.0f,
35 r / 1024.0f / 1024.0f,
36 prof.totalWriteBytes / 1024.0f / 1024.0f,
37 prof.totalReadBytes / 1024.0f / 1024.0f);
40 this_thread::sleep_for(duration<float>(1) / rate.load());
45 void XLinkGlobalProfilingLogger::setRate(
float rate) {
49 float XLinkGlobalProfilingLogger::getRate() {
52 XLinkGlobalProfilingLogger::~XLinkGlobalProfilingLogger() {