// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. #include "ClearScriptV8Native.h" //----------------------------------------------------------------------------- // HighResolutionClock implementation //----------------------------------------------------------------------------- double HighResolutionClock::SleepMilliseconds(double delay, bool precise) { auto start = std::chrono::high_resolution_clock::now(); auto end = start + std::chrono::duration(delay); std::chrono::high_resolution_clock::time_point final; if (!precise) { std::this_thread::sleep_for(std::chrono::duration(delay)); final = std::chrono::high_resolution_clock::now(); } else { while ((final = std::chrono::high_resolution_clock::now()) < end) std::this_thread::yield(); } return std::chrono::duration(final - end).count(); } //----------------------------------------------------------------------------- double HighResolutionClock::GetMillisecondsSinceUnixEpoch() { return std::chrono::duration(std::chrono::system_clock::now().time_since_epoch()).count(); } //----------------------------------------------------------------------------- double HighResolutionClock::GetRelativeMilliseconds() { return std::chrono::duration(std::chrono::high_resolution_clock::now().time_since_epoch()).count(); } //----------------------------------------------------------------------------- double HighResolutionClock::GetRelativeSeconds() { return std::chrono::duration(std::chrono::high_resolution_clock::now().time_since_epoch()).count(); }