我正在寻找一种方法,以便能够在任何给定时间了解我的程序启动以来已经过了多少时间。一种计时器,它会在主代码执行其他所有操作时保持运行,并且可以随时调用。
上下文是 Windows 上的 OpenGL 应用程序,除了知道正在按下哪些键盘键(使用 glutKeyboardFunc)外,我还想知道何时每个键都被按下。所有这些信息都被写入一个 XML 文件,稍后将用于重播用户所做的一切。 (有点像赛车游戏中的重播功能,但更简单)。
最佳答案
C++11:
#include <iostream>
#include <chrono>
auto start = std::chrono::system_clock::now();
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end - start;
std::cout << "elapsed time: " << elapsed_seconds.count() << "s\n";
代码取自 en.cppreference.com并简化。
旧答案:
windows.h
中的 GetTickCount()
返回经过的滴答声(毫秒)。
当您的应用程序启动时,调用此函数并存储它的值,然后每当您需要知道自程序启动以来耗时时,再次调用此方法并从起始值中减去它的值。
int start = GetTickCount(); // At Program Start
int elapsed = GetTickCount() - start; // This is elapsed time since start of your program
关于C++:跟踪耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830029/