描述

所里需要在软件中添加并行下的代码运行时间,本来是想用ctime库直接统计,但是发现有些计算太微妙,不好统计。直接用毫秒来统计是一个比较好的办法

示例代码

#include <iostream>
#include <chrono>
void function1()
{
    // 第一个函数的代码
}
void function2()
{
    // 第二个函数的代码
}
int main()
{
    int total_iterations = 10000;
    // 循环的总迭代次数
    auto start_time_outer = std::chrono::high_resolution_clock::now();
    // 记录整个循环的开始时间
    for (int i = 0; i < total_iterations; i++)
    {
        auto start_time_function1 = std::chrono::high_resolution_clock::now();
        // 记录第一个函数的开始时间
        function1();
        // 调用第一个函数
        auto end_time_function1 = std::chrono::high_resolution_clock::now();
        // 记录第一个函数的结束时间
        auto start_time_function2 = std::chrono::high_resolution_clock::now();
        // 记录第二个函数的开始时间
        function2();
        // 调用第二个函数
        auto end_time_function2 = std::chrono::high_resolution_clock::now();
        // 记录第二个函数的结束时间
        auto duration_function1 = std::chrono::duration_cast<std::chrono::microseconds>(end_time_function1 - start_time_function1);
        // 计算第一个函数的执行时间
        auto duration_function2 = std::chrono::duration_cast<std::chrono::microseconds>(end_time_function2 - start_time_function2);
        // 计算第二个函数的执行时间
        std::cout << "Function 1 time in each loop iteration is: " << duration_function1.count() << " microseconds" << std::endl;
        std::cout << "Function 2 time in each loop iteration is: " << duration_function2.count() << " microseconds" << std::endl;
    }
    auto end_time_outer = std::chrono::high_resolution_clock::now();
    // 记录整个循环的结束时间
    auto duration_outer = std::chrono::duration_cast<std::chrono::microseconds>(end_time_outer - start_time_outer);
    // 计算整个循环的执行时间
    std::cout << "The overall loop time is: " << duration_outer.count() << " microseconds" << std::endl;
    return 0;
}

本文由 管理员 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论