12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include "ceres/wall_time.h"
- #include <ctime>
- #include "ceres/internal/config.h"
- #ifdef _WIN32
- #include <windows.h>
- #else
- #include <sys/time.h>
- #endif
- namespace ceres::internal {
- double WallTimeInSeconds() {
- #ifdef _WIN32
- LARGE_INTEGER count;
- LARGE_INTEGER frequency;
- QueryPerformanceCounter(&count);
- QueryPerformanceFrequency(&frequency);
- return static_cast<double>(count.QuadPart) /
- static_cast<double>(frequency.QuadPart);
- #else
- timeval time_val;
- gettimeofday(&time_val, nullptr);
- return (time_val.tv_sec + time_val.tv_usec * 1e-6);
- #endif
- }
- 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)) {
- return;
- }
- AddEvent("Total");
- VLOG(3) << "\n" << events_ << "\n";
- }
- void EventLogger::AddEvent(const std::string& event_name) {
- if (!VLOG_IS_ON(3)) {
- return;
- }
- const double current_time = WallTimeInSeconds();
- const double relative_time_delta = current_time - last_event_time_;
- const double absolute_time_delta = current_time - start_time_;
- last_event_time_ = current_time;
- StringAppendF(&events_,
- " %30s : %10.5f %10.5f\n",
- event_name.c_str(),
- relative_time_delta,
- absolute_time_delta);
- }
- }
|