一、完整C语言测试示例:
#include <stdio.h>
#include <time.h> //头文件必须加
int main() {
struct timespec start, end; //定义一个开始一个结束的变量
clock_gettime(CLOCK_MONOTONIC, &start); // 记录开始时间
/*
需要测试运行时间的代码段
在此处添加你需要测试的代码段
*/
clock_gettime(CLOCK_MONOTONIC, &end); // 记录结束时间
// 计算代码执行的时间差,单位为纳秒
uint64_t duration = (end.tv_sec - start.tv_sec) * 1000000000 + (end.tv_nsec - start.tv_nsec);
// 将纳秒转换为微秒
double duration_us = (double)duration / 1000.0;
printf("代码执行时间: %.3f 微秒\n", duration_us);
return 0;
}
在上述示例中,我们使用了 <time.h>
头文件中的 timespec
结构体来存储开始时间和结束时间。通过调用 clock_gettime()
函数并传递 CLOCK_MONOTONIC
参数获取系统的实时时钟值。然后,在需要测试运行时间的代码段之前记录开始时间,之后记录结束时间。接下来,计算代码执行的时间差,以纳秒为单位,并将其转换为微秒。最后,使用 printf()
函数输出结果。
二、C++的示例代码:
#include <iostream>
#include <chrono>
int main() {
std::chrono::steady_clock::time_point start = std::chrono::steady_clock::now(); // 记录开始时间
/*
需要测试运行时间的代码段
在此处添加你需要测试的代码段
*/
std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now(); // 记录结束时间
// 计算代码执行的时间差,单位为纳秒
std::chrono::nanoseconds duration = std::chrono::duration_cast<std::chrono::nanoseconds>(end - start);
// 将纳秒转换为微秒
double duration_us = static_cast<double>(duration.count()) / 1000.0;
std::cout << "代码执行时间: " << duration_us << " 微秒" << std::endl;
return 0;
}
在上述示例中,我们使用 <chrono>
头文件中的 steady_clock
和相应的时间点来记录开始时间和结束时间。通过调用 std::chrono::steady_clock::now()
函数获取当前时间点,并将其存储在 start
和 end
变量中。然后,在需要测试运行时间的代码段之前记录开始时间,之后记录结束时间。接下来,使用 duration_cast
函数计算代码执行的时间差,并将其转换为纳秒。最后,将纳秒转换为微秒,并使用 std::cout
输出结果。
请注意,上述代码使用C++,因此文件扩展名应为 .cpp
。