我知道c++中有<chrono>,std::chrono::high_resolution_clock::now()可以得到std::chrono::high_resolution_clock::time_point类型的确切时间。但是,我使用的是原始的C语言,所以不可能调用这个函数。time()函数只能获取二级时间。
我的最终目标是测量多线程程序的运行时间。clock()函数会将所有线程的时钟加起来,所以它不能用来测量运行时间。
发布于 2020-03-02 18:09:47
以下代码片段将提供确切的系统时间:
time_t now;
time(&now);
struct tm* now_tm;
now_tm = localtime(&now);
char dte[80];
strftime (dte, 80, "%Y-%m-%d %I:%M:%S", now_tm);发布于 2020-03-02 18:52:36
不幸的是,更高分辨率的时钟往往会在不同的平台上略有不同。它还取决于您感兴趣的时钟类型(例如实时、CPU时间或单调时间)。
根据您的用例,您可能需要单调的时间…
如果您使用的是POSIX操作系统,那么通常可以使用clock_gettime,但即使这样,可用的时钟也会有很大的不同。例如,macOS doesn't support CLOCK_MONOTONIC,但它有其他API,您可以使用它来获取单调时间。
如果你在Windows上,你可能会想要使用QueryPerformanceCounters。
如果你想要一些抽象的东西来消除这些差异,我会在一段时间后使用put something together。
https://stackoverflow.com/questions/60485476
复制相似问题