首页 >后端开发 >C++ >如何准确测量 C 和 C 中经过的时间?

如何准确测量 C 和 C 中经过的时间?

Patricia Arquette
Patricia Arquette原创
2024-12-22 20:10:12743浏览

How Can I Accurately Measure Elapsed Time in C and C  ?

C 和 C 语言中的高效运行时间测量

准确测量运行时间对于编程中的性能分析至关重要。然而,标准 C 函数 time() 对于短期任务来说可能不可靠。

在 C 中使用 gettimeofday()

为了解决这个问题,C 程序员可以使用 gettimeofday() 函数,该函数返回微秒精度的当前时间。下面是一个示例:

#include <sys/time.h>

struct timeval startTV, endTV;

gettimeofday(&startTV, NULL); // Start time

// Perform long-running tasks

gettimeofday(&endTV, NULL); // End time

time_t diffSeconds = endTV.tv_sec - startTV.tv_sec;
long diffMicroseconds = endTV.tv_usec - startTV.tv_usec;

printf("Time taken: %ld seconds, %ld microseconds\n", diffSeconds, diffMicroseconds);

在 C 中使用 std::chrono

在 C 中,std::chrono 库提供了一种更现代、更便携的测量解决方案经过的时间。考虑这个例子:

#include <chrono>

using namespace std::chrono;

auto begin = steady_clock::now(); // Start time

// Perform long-running tasks

auto end = steady_clock::now(); // End time

duration<double, nano> diff = end - begin;

cout << "Time taken: " << diff.count() << " nanoseconds" << endl;

理解结果

gettimeofday() 和 std::chrono 的输出将返回以秒和微秒为单位的时间差/纳秒。例如:

  • 所用时间:4 秒 25 微秒(使用 gettimeofday())
  • 所用时间:26,339 微秒(使用 std::chrono)

在第一个示例中,经过的时间是 4.025 秒,而在第二个示例中例如,它是 0.026339 秒。请注意,std::chrono 默认返回纳秒,因此如果需要,您可能需要手动将它们转换为微秒或秒。

以上是如何准确测量 C 和 C 中经过的时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn