From 81d5bb66817fed9434c3b41e681b308dd970cc4c Mon Sep 17 00:00:00 2001 From: David Boehme Date: Thu, 4 Jan 2024 20:01:11 -0800 Subject: [PATCH] Use persistent snapshot buffer (#523) --- src/caliper/Caliper.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/caliper/Caliper.cpp b/src/caliper/Caliper.cpp index 2f1c75e72..582aca84f 100644 --- a/src/caliper/Caliper.cpp +++ b/src/caliper/Caliper.cpp @@ -252,6 +252,8 @@ struct Caliper::ThreadData MetadataTree tree; ::siglock lock; + SnapshotRecord snapshot; + // This thread's blackboard Blackboard thread_blackboard; // copy of the last process blackboard snapshot @@ -902,17 +904,17 @@ Caliper::push_snapshot(Channel* channel, SnapshotView trigger_info) std::lock_guard<::siglock> g(sT->lock); - SnapshotRecord rec; + sT->snapshot.reset(); // copy pull_snapshot() functionality to avoid superfluous siglock update - rec.builder().append(trigger_info); - channel->mP->events.snapshot(this, channel, trigger_info, rec.builder()); + sT->snapshot.builder().append(trigger_info); + channel->mP->events.snapshot(this, channel, trigger_info, sT->snapshot.builder()); - sT->thread_blackboard.snapshot(rec.builder()); + sT->thread_blackboard.snapshot(sT->snapshot.builder()); sT->update_process_snapshot(sG->process_blackboard); - rec.builder().append(sT->process_snapshot.view()); + sT->snapshot.builder().append(sT->process_snapshot.view()); - channel->mP->events.process_snapshot(this, channel, trigger_info, rec.view()); + channel->mP->events.process_snapshot(this, channel, trigger_info, sT->snapshot.view()); } void