UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UnixPlatformTime.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================================
4 UnixPlatformTime.h: Unix platform Time functions
5==============================================================================================*/
6
7#pragma once
8
9#include "CoreTypes.h"
11
12#include <time.h> // IWYU pragma: export
13
18{
19 static CORE_API double InitTiming();
20
21 static inline double Seconds()
22 {
23 if (UNLIKELY(ClockSource < 0))
24 {
25 ClockSource = CalibrateAndSelectClock();
26 }
27
28 struct timespec ts;
29 clock_gettime(ClockSource, &ts);
30 return static_cast<double>(ts.tv_sec) + static_cast<double>(ts.tv_nsec) / 1e9;
31 }
32
33 static inline uint32 Cycles()
34 {
35 if (UNLIKELY(ClockSource < 0))
36 {
37 ClockSource = CalibrateAndSelectClock();
38 }
39
40 struct timespec ts;
42 return static_cast<uint32>(static_cast<uint64>(ts.tv_sec) * (uint64)1e6 + static_cast<uint64>(ts.tv_nsec) / 1000ULL);
43 }
44
45 static inline uint64 Cycles64()
46 {
47 struct timespec ts;
49 return static_cast<uint64>(static_cast<uint64>(ts.tv_sec) * (uint64)1e7 + static_cast<uint64>(ts.tv_nsec) / 100ULL);
50 }
51
52 static CORE_API bool UpdateCPUTime(float DeltaSeconds);
53 static CORE_API bool UpdateThreadCPUTime(float = 0.0);
54 static CORE_API void AutoUpdateGameThreadCPUTime(double UpdateInterval);
55
59
63 static CORE_API void PrintCalibrationLog();
64
66 {
67 return ClockSource;
68 }
69
70private:
71
73 static CORE_API int ClockSource;
74
76 static CORE_API char CalibrationLog[4096];
77
82 static CORE_API int CalibrateAndSelectClock();
83
87 static CORE_API uint64 CallsPerSecondBenchmark(clockid_t BenchClockId, const char * BenchClockIdName);
88};
89
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define UNLIKELY(x)
Definition Platform.h:857
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FUnixTime FPlatformTime
Definition UnixPlatformTime.h:90
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GenericPlatformTime.h:16
Definition GenericPlatformTime.h:43
Definition UnixPlatformTime.h:18
static CORE_API double InitTiming()
Definition UnixPlatformTime.cpp:81
static double Seconds()
Definition UnixPlatformTime.h:21
static uint32 Cycles()
Definition UnixPlatformTime.h:33
static CORE_API void PrintCalibrationLog()
Definition UnixPlatformTime.cpp:378
static CORE_API FCPUTime GetCPUTime()
Definition UnixPlatformTime.cpp:94
static CORE_API void AutoUpdateGameThreadCPUTime(double UpdateInterval)
Definition UnixPlatformTime.cpp:219
static CORE_API double GetLastIntervalThreadCPUTimeInSeconds()
Definition UnixPlatformTime.cpp:231
static uint64 Cycles64()
Definition UnixPlatformTime.h:45
static UE_INTERNAL int GetClockSource()
Definition UnixPlatformTime.h:65
static CORE_API FCPUTime GetThreadCPUTime()
Definition UnixPlatformTime.cpp:122
static CORE_API bool UpdateCPUTime(float DeltaSeconds)
Definition UnixPlatformTime.cpp:128
static CORE_API bool UpdateThreadCPUTime(float=0.0)
Definition UnixPlatformTime.cpp:178