简体   繁体   中英

What is the best, most accurate timer in C++?

什么是C ++中最好,最准确的计时器?

The answer to this is platform-specific. The operating system is responsible for keeping track of timing and consequently, the C++ language itself provides no language constructs or built-in functions for doing this.

However, here are some resources for platform-dependent timers:

A cross-platform solution might be boost::asio::deadline_timer .

In C++11 you can portably get to the highest resolution timer with:

#include <iostream>
#include <chrono>
#include "chrono_io"

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    auto t1 = Clock::now();
    auto t2 = Clock::now();
    std::cout << t2-t1 << '\n';
}

Example output:

74 nanoseconds

"chrono_io" is an extension to ease I/O issues with these new types and is freely available here .

There is also an implementation of <chrono> available in boost (might still be on tip-of-trunk, not sure it has been released).

在Windows下它将是QueryPerformanceCounter ,虽然看到你没有指定任何条件,但可能有一个外部超高分辨率计时器,它有一个c ++接口的驱动程序

The C++ standard doesn't say a whole lot about time. There are a few features inherited from C via the <ctime> header.

The function clock is the only way to get sub-second precision, but precision may be as low as one second (it is defined by the macro CLOCKS_PER_SEC ). Also, it does not measure real time at all, but processor time.

The function time measures real time, but (usually) only to the nearest second.

To measure real time with subsecond precision, you need a nonstandard library.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM