為了測試某段特定代碼的執行時間,體現代碼的性能,可以使用計時器對代碼段計時。下面使用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工具中基準測試、性能測試的方法