From 6da9ed1ad9e04bb8180ed762f73d4a7d93090e24 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Tue, 3 Dec 2019 13:19:11 +0100 Subject: [PATCH] Support query events stacked on incremental_load events in summarize. --- summarize/src/analysis.rs | 22 ++++++++++++++++++---- summarize/src/query_data.rs | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/summarize/src/analysis.rs b/summarize/src/analysis.rs index 95d8048..923e1ba 100644 --- a/summarize/src/analysis.rs +++ b/summarize/src/analysis.rs @@ -159,11 +159,25 @@ pub fn perform_analysis(data: ProfilingData) -> Results { thread.stack.pop(); } + let current_event_duration = current_event.duration().unwrap(); + // If there is something on the stack, subtract the current // interval from it. if let Some(current_top) = thread.stack.last() { record_event_data(¤t_top.label, &|data| { - data.self_time -= current_event.duration().unwrap(); + match ¤t_top.event_kind[..] { + QUERY_EVENT_KIND | GENERIC_ACTIVITY_EVENT_KIND => { + data.self_time -= current_event_duration; + } + INCREMENTAL_LOAD_RESULT_EVENT_KIND => { + data.incremental_load_time -= current_event_duration; + } + _ => { + eprintln!("Unexpectedly enountered event `{:?}`, \ + while top of stack was `{:?}`. Ignoring.", + current_event, current_top); + } + } }); } @@ -171,7 +185,7 @@ pub fn perform_analysis(data: ProfilingData) -> Results { match ¤t_event.event_kind[..] { QUERY_EVENT_KIND | GENERIC_ACTIVITY_EVENT_KIND => { record_event_data(¤t_event.label, &|data| { - data.self_time += current_event.duration().unwrap(); + data.self_time += current_event_duration; data.number_of_cache_misses += 1; data.invocation_count += 1; }); @@ -179,13 +193,13 @@ pub fn perform_analysis(data: ProfilingData) -> Results { QUERY_BLOCKED_EVENT_KIND => { record_event_data(¤t_event.label, &|data| { - data.blocked_time += current_event.duration().unwrap(); + data.blocked_time += current_event_duration; }); } INCREMENTAL_LOAD_RESULT_EVENT_KIND => { record_event_data(¤t_event.label, &|data| { - data.incremental_load_time += current_event.duration().unwrap(); + data.incremental_load_time += current_event_duration; }); } diff --git a/summarize/src/query_data.rs b/summarize/src/query_data.rs index 7f96c66..355484b 100644 --- a/summarize/src/query_data.rs +++ b/summarize/src/query_data.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; use std::ops::Sub; use std::time::Duration; -#[derive(Serialize, Deserialize, Clone)] +#[derive(Serialize, Deserialize, Clone, Debug)] pub struct QueryData { pub label: String, pub self_time: Duration,