Fall back to the system clock when building with newlib on a system without a monotonic clock.
PiperOrigin-RevId: 493917905 Change-Id: I20137cfcda3671ffc8edcda2b6554aa392e3a00a
This commit is contained in:
		
				
					committed by
					
						
						Copybara-Service
					
				
			
			
				
	
			
			
			
						parent
						
							d454936a0c
						
					
				
				
					commit
					516940f16d
				
			@@ -1123,17 +1123,24 @@ std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
 | 
				
			|||||||
// A helper class for measuring elapsed times.
 | 
					// A helper class for measuring elapsed times.
 | 
				
			||||||
class Timer {
 | 
					class Timer {
 | 
				
			||||||
 public:
 | 
					 public:
 | 
				
			||||||
  Timer() : start_(std::chrono::steady_clock::now()) {}
 | 
					  Timer() : start_(clock::now()) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // Return time elapsed in milliseconds since the timer was created.
 | 
					  // Return time elapsed in milliseconds since the timer was created.
 | 
				
			||||||
  TimeInMillis Elapsed() {
 | 
					  TimeInMillis Elapsed() {
 | 
				
			||||||
    return std::chrono::duration_cast<std::chrono::milliseconds>(
 | 
					    return std::chrono::duration_cast<std::chrono::milliseconds>(
 | 
				
			||||||
               std::chrono::steady_clock::now() - start_)
 | 
					               clock::now() - start_)
 | 
				
			||||||
        .count();
 | 
					        .count();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 private:
 | 
					 private:
 | 
				
			||||||
  std::chrono::steady_clock::time_point start_;
 | 
					  // Fall back to the system_clock when building with newlib on a system
 | 
				
			||||||
 | 
					  // without a monotonic clock.
 | 
				
			||||||
 | 
					#if defined(_NEWLIB_VERSION) && !defined(CLOCK_MONOTONIC)
 | 
				
			||||||
 | 
					  using clock = std::chrono::system_clock;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					  using clock = std::chrono::steady_clock;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					  clock::time_point start_;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Returns a timestamp as milliseconds since the epoch. Note this time may jump
 | 
					// Returns a timestamp as milliseconds since the epoch. Note this time may jump
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user