blob: a90816c8c96db6501850c10488df589013dc2656 [file] [log] [blame] [edit]
/*
* Copyright 2023 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/base/SkTime.h"
#if !defined(__has_feature)
#define __has_feature(x) 0
#endif
#if __has_feature(memory_sanitizer)
#include <time.h>
#else
#include <chrono>
#include <ratio>
#endif
double SkTime::GetNSecs() {
#if __has_feature(memory_sanitizer)
// See skbug.com/40037711
struct timespec tp;
clock_gettime(CLOCK_MONOTONIC, &tp);
return tp.tv_sec * 1e9 + tp.tv_nsec;
#else
auto now = std::chrono::steady_clock::now();
std::chrono::duration<double, std::nano> ns = now.time_since_epoch();
return ns.count();
#endif
}