#include <iostream>
#include <iomanip>
#include <windows.h>
#include <math.h>
#define num 20
#define cyc 1000000000ul
using namespace std;
int main(){
LARGE_INTEGER startTime, endTime, fre;
double times[num], timeAvg, timeSd;
unsigned int i;
int n;
int p=1234;
int q;
QueryPerformanceFrequency(&fre); //取得CPU頻率
printf("執行%3d輪,每輪執行 %d次\n\n", num, cyc);
for (n = 0; n < num; n++){
QueryPerformanceCounter(&startTime); //取得開機到現在經過幾個CPU Cycle
for(i = 0; i < cyc; i++){
//↓輸入測試程式↓
q = p*2;
//↑輸入測試程式↑
}
QueryPerformanceCounter(&endTime); //取得開機到程式執行完成經過幾個CPU Cycle
times[n] = ((double)endTime.QuadPart - (double)startTime.QuadPart)/fre.QuadPart;
}
timeAvg = 0;
timeSd = 0;
for (n = 0; n < num; n++){
timeAvg += times[n];
printf("第%3d輪所需時間%15.10f秒\n", n + 1, times[n]);
}
timeAvg /= num;
for (n = 0; n < num; n++){
timeSd += (times[n] - timeAvg)*(times[n] - timeAvg);
}
timeSd = sqrt(timeSd / num);
printf("\n執行完畢,\n平均執行時間%15.10f秒,\n標準差%15.10f秒\n", timeAvg, timeSd);
system("pause");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHdpbmRvd3MuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2RlZmluZSBudW0gMjAKI2RlZmluZSBjeWMgMTAwMDAwMDAwMHVsIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbWFpbigpewogICAgTEFSR0VfSU5URUdFUiBzdGFydFRpbWUsIGVuZFRpbWUsIGZyZTsKICAgIGRvdWJsZSB0aW1lc1tudW1dLCB0aW1lQXZnLCB0aW1lU2Q7CiAgICB1bnNpZ25lZCBpbnQgaTsKICAgIGludCBuOwogICAgaW50IHA9MTIzNDsKICAgIGludCBxOwogICAgUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmZnJlKTsgLy/lj5blvpdDUFXpoLvnjocKICAgIHByaW50Zigi5Z+36KGMJTNk6Lyq77yM5q+P6Lyq5Z+36KGMICVk5qyhXG5cbiIsIG51bSwgY3ljKTsKICAgIGZvciAobiA9IDA7IG4gPCBudW07IG4rKyl7CiAgICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJnN0YXJ0VGltZSk7IC8v5Y+W5b6X6ZaL5qmf5Yiw54++5Zyo57aT6YGO5bm+5YCLQ1BVIEN5Y2xlCiAgICAgICAgZm9yKGkgPSAwOyBpIDwgY3ljOyBpKyspewogICAgICAgICAgICAvL+KGk+i8uOWFpea4rOippueoi+W8j+KGkyAKICAgICAgICAgICAgcSA9IHAqMjsKICAgICAgICAgICAgLy/ihpHovLjlhaXmuKzoqabnqIvlvI/ihpEgCiAgICAgICAgfQogICAgICAgIFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZlbmRUaW1lKTsgLy/lj5blvpfplovmqZ/liLDnqIvlvI/ln7fooYzlrozmiJDntpPpgY7lub7lgItDUFUgQ3ljbGUKICAgICAgICB0aW1lc1tuXSA9ICgoZG91YmxlKWVuZFRpbWUuUXVhZFBhcnQgLSAoZG91YmxlKXN0YXJ0VGltZS5RdWFkUGFydCkvZnJlLlF1YWRQYXJ0OwogICAgfQogICAgdGltZUF2ZyA9IDA7CiAgICB0aW1lU2QgPSAwOwogICAgZm9yIChuID0gMDsgbiA8IG51bTsgbisrKXsKICAgICAgICB0aW1lQXZnICs9IHRpbWVzW25dOwogICAgICAgIHByaW50Zigi56ysJTNk6Lyq5omA6ZyA5pmC6ZaTJTE1LjEwZuenklxuIiwgbiArIDEsIHRpbWVzW25dKTsKICAgIH0KICAgIHRpbWVBdmcgLz0gbnVtOwogICAgZm9yIChuID0gMDsgbiA8IG51bTsgbisrKXsKICAgICAgICB0aW1lU2QgKz0gKHRpbWVzW25dIC0gdGltZUF2ZykqKHRpbWVzW25dIC0gdGltZUF2Zyk7CiAgICB9CiAgICB0aW1lU2QgPSBzcXJ0KHRpbWVTZCAvIG51bSk7CiAgICBwcmludGYoIlxu5Z+36KGM5a6M55Wi77yMXG7lubPlnYfln7fooYzmmYLplpMlMTUuMTBm56eS77yMXG7mqJnmupblt64lMTUuMTBm56eSXG4iLCB0aW1lQXZnLCB0aW1lU2QpOwogICAgc3lzdGVtKCJwYXVzZSIpOwogICAgcmV0dXJuIDA7Cn0K