Do less work when skipping timing reports
For some tests, the overhead of building up the table during startup is
a significant part of the runtime of the test. This speeds up one test
by 57% for example.
Change-Id: I370237510f8fcfe1c8a18395293f25fe44932f9e
Signed-off-by: Brian Silverman <brian.silverman@bluerivertech.com>
diff --git a/aos/events/timing_statistics.cc b/aos/events/timing_statistics.cc
index cdeb588..52f2048 100644
--- a/aos/events/timing_statistics.cc
+++ b/aos/events/timing_statistics.cc
@@ -7,35 +7,57 @@
namespace internal {
void RawFetcherTiming::set_timing_report(timing::Fetcher *new_fetcher) {
- CHECK_NOTNULL(new_fetcher);
fetcher = new_fetcher;
- latency.set_statistic(fetcher->mutable_latency());
+ if (!new_fetcher) {
+ latency.set_statistic(nullptr);
+ } else {
+ latency.set_statistic(fetcher->mutable_latency());
+ }
}
void RawFetcherTiming::ResetTimingReport() {
+ if (!fetcher) {
+ return;
+ }
+
latency.Reset();
fetcher->mutate_count(0);
}
void RawSenderTiming::set_timing_report(timing::Sender *new_sender) {
- CHECK_NOTNULL(new_sender);
sender = new_sender;
- size.set_statistic(sender->mutable_size());
+ if (!sender) {
+ size.set_statistic(nullptr);
+ } else {
+ size.set_statistic(sender->mutable_size());
+ }
}
void RawSenderTiming::ResetTimingReport() {
+ if (!sender) {
+ return;
+ }
+
size.Reset();
sender->mutate_count(0);
}
void TimerTiming::set_timing_report(timing::Timer *new_timer) {
- CHECK_NOTNULL(new_timer);
timer = new_timer;
- wakeup_latency.set_statistic(timer->mutable_wakeup_latency());
- handler_time.set_statistic(timer->mutable_handler_time());
+ if (!timer) {
+ wakeup_latency.set_statistic(nullptr);
+ handler_time.set_statistic(nullptr);
+ } else {
+ wakeup_latency.set_statistic(timer->mutable_wakeup_latency());
+ handler_time.set_statistic(timer->mutable_handler_time());
+ }
}
void TimerTiming::ResetTimingReport() {
+ if (!timer) {
+ return;
+ }
+
wakeup_latency.Reset();
handler_time.Reset();
timer->mutate_count(0);