Checking new stuff from C++, I have found the std::chrono library.
I am wondering if std::chrono::high_resolution_clock could be a good replacement for SDL_GetTicks?
The advantage of going with std::chrono::high_resolution_clock
is to keep away from storing time points and time durations in a Uint32
. The std::chrono
library comes with a wide variety of std::chrono::duration
s that you should use instead. This will make code more readable, and less ambiguous:
Uint32 t0 = SDL_GetTicks();
// ...
Uint32 t1 = SDL_GetTicks();
// ...
// Is t1 a time point or time duration?
Uint32 d = t1 -t0;
// What units does d have?
vs:
using namespace std::chrono;
typedef high_resolution_clock Clock;
Clock::time_point t0 = Clock::now();
// ...
Clock::time_point t1 = Clock::now();
// ...
// Is t1 has type time_point. It can't be mistaken for a time duration.
milliseconds d = t1 - t0;
// d has type milliseconds
The typed system for holding points in time and time durations has no overhead with respect to just storing things in a Uint32
. Except maybe that things will be stored in an Int64
instead. But even that you could customize if you really wanted to:
typedef duration<Uint32, milli> my_millisecond;
You can inspect the precision of the high_resolution_clock
with:
cout << high_resolution_clock::period::num << '/'
<< high_resolution_clock::period::den << '\n';
SDL_GetTicks returns milliseconds so it is totally possible to use std::chrono instead, but mind the units conversion necessary. It may not be as simple as SDL_GetTicks. Also, the starting point won't be the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With