問題
使用C/C++進行算法編程時,如何輸出程序的運行時間問題;
使用IDE為DEV-C++;
解決
考慮到C/C++兼容性問題,這里使用的是C99的方法;
#include<stdio.h>
#include<time>
printf("Time used = %.2f\n", (double)clock() / CLOCKS_PER_SEC);
printf
輸出的時間是以秒為單位;- 常數
CLOCKS_PER_SEC
是和操作系統相關,不要直接使用clock()
獲取的運行時間返回值,應除以CLOCKS_PER_SEC
;
樣例
#include <iostream>
#include<time.h>
int main(int argc, char** argv) {
for (int i = 0; i < 214748280; i++) {
i++;
}
for (int i = 0; i < 214748280; i++) {
i++;
}
// 輸出運行時間;
std::cout << "The run time is: " <<(double)clock() / CLOCKS_PER_SEC << "s" << std::endl;
return 0;
}
輸出:
如果是希望得到程序段運行的時間怎么辦?
樣例
#include <iostream>
#include<time.h>
int main(int argc, char** argv) {
double startTime1 = clock();//1計時開始
for (int i = 0; i < 214748280; i++) {
i++;
}
double endTime1 = clock();//1計時結束
double startTime2 = clock();//2計時開始
for (int i = 0; i < 214748280; i++) {
i++;
}
double endTime2 = clock();//2計時結束
// 輸出1運行時間;
std::cout << "The run time is: " <<(double)(endTime1 - startTime1) / CLOCKS_PER_SEC << "s" << std::endl;
// 輸出2運行時間;
std::cout << "The run time is: " <<(double)(endTime2 - startTime2) / CLOCKS_PER_SEC << "s" << std::endl;
return 0;
}