#include <iostream>
#include <string>
#include <chrono>
void Run(){
for(int i=0; i<10000000; i++){
}
}
void timeConsumed1(){
clock_t startTime = clock();
Run();
clock_t endTime = clock();
double spendSecond = (double)(endTime-startTime)/CLOCKS_PER_SEC;
std::cout<<"spend time : "<<std::endl
<<spendSecond<<" s"<<std::endl;}
void timeConsumed2(){
std::chrono::high_resolution_clock::time_point startTime = std::chrono::high_resolution_clock::now();
Run();
std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();
//秒
double duration_second = std::chrono::duration<double>(endTime - startTime).count();
std::cout << duration_second << " s" << std::endl;
}
void timeConsumedInMilli(){
auto startTime = std::chrono::steady_clock::now();
Run();
auto endTime = std::chrono::steady_clock::now();
//毫秒级
auto duration_second = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);
std::cout<< duration_second.count() << " ms" << std::endl;
}
void timeConsumedInMicro(){
auto startTime = std::chrono::steady_clock::now();
Run();
auto endTime = std::chrono::steady_clock::now();
//微秒级
double duration_second = std::chrono::duration<double, std::micro>(endTime - startTime).count();
std::cout<< duration_second << " us" << std::endl;
}
void timeConsumedInNano(){
auto startTime = std::chrono::steady_clock::now();
Run();
auto endTime = std::chrono::steady_clock::now();
//纳秒级
auto duration_second = std::chrono::duration_cast<std::chrono::nanoseconds>(endTime - startTime);
std::cout<< duration_second.count() << " ns" << std::endl;}
int main(int argc, char** argv){
timeConsumed1();
timeConsumed2();
timeConsumedInMilli();
timeConsumedInMicro();
timeConsumedInNano();
return 0;
}
struct timespec ts_begin, ts_end;
clock_gettime(CLOCK_REALTIME, &ts_begin);
// timespec_get(&ts_begin, TIME_UTC);
std::chrono::high_resolution_clock::time_point beginTime = std::chrono::high_resolution_clock::now();
clock_t start = clock();
/** 引擎进行推理 **/
infer->forward();
clock_t end = clock();
std::chrono::high_resolution_clock::time_point endTime = std::chrono::high_resolution_clock::now();
clock_gettime(CLOCK_REALTIME, &ts_end);
// timespec_get(&ts_end, TIME_UTC);
double spend_time = (double)(end - start)/CLOCKS_PER_SEC*1000;
std::cout << "############## Total inference time 1 is " << spend_time << "ms" << std::endl;
std::chrono::milliseconds timeInterval = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - beginTime);
std::cout << "############## Total inference time 2 is " << timeInterval.count() << "ms" << std::endl;
double spend3 = (double)(ts_end.tv_nsec - ts_begin.tv_nsec)/1e6;
std::cout << "############## Total inference time 3 is " << spend3 << "ms" << std::endl;