一、完整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。
文章提供了使用C语言和C++来测量代码执行时间的示例。在C语言中,通过<time.h>头文件的timespec结构体和clock_gettime()函数实现;在C++中,利用<chrono>库的steady_clock进行时间点记录和计算。
17万+

被折叠的 条评论
为什么被折叠?



