C++:跟踪耗时

标签 c++ windows opengl glut

我正在寻找一种方法,以便能够在任何给定时间了解我的程序启动以来已经过了多少时间。一种计时器,它会在主代码执行其他所有操作时保持运行,并且可以随时调用。

上下文是 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/

相关文章:

c++ - C扩展一个指针数组

asp.net - 多个 web.config 重定向规则

qt - 许多 QGLMaterial 项目的 openGL 性能不佳

c++ - 复制字符串函数

C++ std::chrono 在它自己的例子中给出了错误的输出

c++ - 函数重载时SFINAE和隐式强制转换

c++ - 延迟功能如何工作?

c++ - TCP Sockets什么时候需要Keep-alive?

c - OpenGL:每个图元的顶点属性数组?

c++ - Visual Studio 2013 强制将 64 DLL 文件转换为 32 位应用程序 - 如何解决此问题?