算法主要耗时在多次求不同整数的平方。
当用pow函数求时,超时;而直接乘才1ms。
于是就写了一段代码来测试pow的性能
首先产生60个随机整数,然后重复60次求整数的平方.
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
const int MAX = 10000;
int a[MAX];
int main()
{
int i, j, n = MAX;
int rep = 60; //重复次数
clock_t beg, end;
for (i = 0; i < n; i++)
a[i] = rand() % 20000 - 10000; //-10000 <= a[i]< 10000
cout << "test a[i]*a[i]" << endl;
beg = clock();
for (j = 0; j < rep; j++)
for (i = 0; i < n; i++)
a[i] * a[i];
end = clock();
cout << "time: " << end - beg << "ms" << endl;
cout << "test pow(a[i], 2.0)" << endl;
beg = clock();
for (j = 0; j < rep; j++)
for (i = 0; i < n; i++)
pow(a[i], 2.0);
end = clock();
cout << "time: " << end - beg << "ms" << endl;
return 0;
}
测试结果