为了测试某段特定代码的执行时间,体现代码的性能,可以使用计时器对代码段计时。下面使用std::chrono中的api编写简单案例:
//
// main.cpp
// HelloWorld
//
// Created by on 2024/11/28.
//#include <iostream>
#include <vector>
#include <thread>int main(int argc, const char * argv[]) {// insert code here...using namespace std::literals::chrono_literals;auto start = std::chrono::high_resolution_clock::now();std::this_thread::sleep_for(1s);auto end = std::chrono::high_resolution_clock::now();std::chrono::duration<float> duration = end - start;std::cout<<"duration:"<<duration.count()<<" s"<<std::endl;std::cin.get();
}
在实际编程中使用计时器,可以将其封装在结构体中Timer,利用栈的生命周期特性(31. c++对象生存期)在待测试的代码中加入计时器Timer,随着调用函数结束,计时器被销毁调用析构函数计算执行时间:
//
// main.cpp
// HelloWorld
//
// Created by on 2024/11/28.
//#include <iostream>
#include <vector>
#include <thread>
struct Timer
{std::chrono::time_point<std::chrono::steady_clock> start,end;std::chrono::duration<float> duration ;Timer(){start = std::chrono::high_resolution_clock::now();}~Timer(){end = std::chrono::high_resolution_clock::now();duration = end - start;std::cout<<"duration:"<<duration.count()*1000.0f<<" ms\n";}
};
void function()
{Timer timer;for (int i=0; i<100; ++i) {//优化输出std::cout<<i<<std::endl;std::cout<<i<<"\n";}
}int main(int argc, const char * argv[]) {function();std::cin.get();
}
对于实际执行基准测试来说,这个方法还是比较粗略的,后续的学习中会继续描述具体在vc工具中基准测试、性能测试的方法