level 5
tomkyte
楼主
比log函数慢很多,运行不出来。
#include <iostream>
#include <cmath>
#include <ctime>
int main()
{
int a[20];
for(int i=0;i<20;i++)
a[i]=1<<i;
int t=clock();
double lg2=log(2);
long long sum=0LL;
for(int j=0;j<(1<<20);j++)
for(int i=0;i<20;i++)
{
sum+=(int)round(log(a[i])/lg2);
}
printf("use log\t%lld,%dms\n",sum,clock()-t);
t=clock();
sum=0LL;
for(int j=0;j<(1<<20);j++)
for(int i=0;i<20;i++)
{
sum+=(int)log2(a[i]);
}
printf("use log2\t%lld,%dms\n",sum,clock()-t);
return 0;
}
同样的程序在windows下是
D:\>a
use log 199229440,2230ms
use log2 199229440,1217ms
2016年11月12日 07点11分
1
#include <iostream>
#include <cmath>
#include <ctime>
int main()
{
int a[20];
for(int i=0;i<20;i++)
a[i]=1<<i;
int t=clock();
double lg2=log(2);
long long sum=0LL;
for(int j=0;j<(1<<20);j++)
for(int i=0;i<20;i++)
{
sum+=(int)round(log(a[i])/lg2);
}
printf("use log\t%lld,%dms\n",sum,clock()-t);
t=clock();
sum=0LL;
for(int j=0;j<(1<<20);j++)
for(int i=0;i<20;i++)
{
sum+=(int)log2(a[i]);
}
printf("use log2\t%lld,%dms\n",sum,clock()-t);
return 0;
}
同样的程序在windows下是
D:\>a
use log 199229440,2230ms
use log2 199229440,1217ms


