Reputation: 5657
Under Windows there are some handy functions like QueryPerformanceCounter
from mmsystem.h
to create a high resolution timer.
Is there something similar for Linux?
Upvotes: 47
Views: 84144
Reputation: 457
Here's a link describing how to do high-resolution timing on Linux and Windows... and no, Don't use RTSC.
Upvotes: 8
Reputation: 18109
With C++11, use std::chrono::high_resolution_clock
.
Example:
#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;
int main()
{
auto t1 = Clock::now();
auto t2 = Clock::now();
std::cout << "Delta t2-t1: "
<< std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
<< " nanoseconds" << std::endl;
}
Output:
Delta t2-t1: 131 nanoseconds
Upvotes: 5
Reputation: 12571
For my money, there is no easier-to-use cross-platform timer than Qt's QTime class.
Upvotes: 1
Reputation: 13508
For Linux (and BSD) you want to use clock_gettime().
#include <sys/time.h>
int main()
{
timespec ts;
// clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}
See: This answer for more information
Upvotes: 30
Reputation: 40380
It's been asked before here -- but basically, there is a boost ptime function you can use, or a POSIX clock_gettime() function which can serve basically the same purpose.
Upvotes: 31
Reputation: 2496
I have nothing but this link: http://www.mjmwired.net/kernel/Documentation/rtc.txt
I'm pretty sure RTC is what you are looking for though.
EDIT
Other answers seem more portable than mine.
Upvotes: 1