Make EventLogger more efficient. If VLOG(3) is not enabled, then eliminate all work done by the EventLogger constructor. Change-Id: I0f8512dcb275b68ad443b2e26bc1da58a3238b0a
diff --git a/internal/ceres/wall_time.cc b/internal/ceres/wall_time.cc index 09e3c4a..7163927 100644 --- a/internal/ceres/wall_time.cc +++ b/internal/ceres/wall_time.cc
@@ -64,20 +64,24 @@ #endif } -EventLogger::EventLogger(const std::string& logger_name) - : start_time_(WallTimeInSeconds()), - last_event_time_(start_time_), - events_("") { - StringAppendF(&events_, - "\n%s\n Delta Cumulative\n", - logger_name.c_str()); +EventLogger::EventLogger(const std::string& logger_name) { + if (!VLOG_IS_ON(3)) { + return; + } + + start_time_ = WallTimeInSeconds(); + last_event_time_ = start_time_; + events_ = StringPrintf( + "\n%s\n Delta Cumulative\n", + logger_name.c_str()); } EventLogger::~EventLogger() { - if (VLOG_IS_ON(3)) { - AddEvent("Total"); - VLOG(2) << "\n" << events_ << "\n"; + if (!VLOG_IS_ON(3)) { + return; } + AddEvent("Total"); + VLOG(3) << "\n" << events_ << "\n"; } void EventLogger::AddEvent(const std::string& event_name) {
diff --git a/internal/ceres/wall_time.h b/internal/ceres/wall_time.h index 966aa67..ed0610f 100644 --- a/internal/ceres/wall_time.h +++ b/internal/ceres/wall_time.h
@@ -77,7 +77,7 @@ void AddEvent(const std::string& event_name); private: - const double start_time_; + double start_time_; double last_event_time_; std::string events_; };