写了一段代码测试CPU的性能,结果一直有错误,望大神指出来
#include
#include
#include
#include
#define size 1000
#define step 1000
main()
{
int i,j,k,temp;
char *a;
clock_t end;
struct timeval time1,time2;
gettimeofday(&time1,NULL); //取得当前系统时间
a=(char*)malloc(size*size); //为数组a申请内存空间 for(i=0;i<size;i++)
for (j=0;j<size;j++)
a[i*size+j]=(char)(10.0*rand()/(RAND_MAX+1.0)); for(i=0;i<size;i++)
for(j=0;j<size;j++)
for(k=0;k<step;k++)
temp=a[i*size+j]*a[i*size+j];
end=clock(); //取得CPU时间
gettimeofday(&time2,NULL); //取得当前的系统时间
time2.tv_sec-=time1.tv_sec; //计算响应时间
time2.tv_usec-=time1.tv_usec;
if(time2.tv_usec<0L)
{
time2.tv_usec+=1000000L;
time2.tv_sec-=1;
}
printf("CPU time is: %f\n",end/1000000.0);
printf("Wall clock time is:%ld.%6ld seconds\n",time2.tv_sec, time2.tv_usec);
free(a);
return 0;
}
程序2:
#include
#include
#include
#include
#define size 1000
#define step 1000
main()
{
int i,j,k,temp;
char *a;
FILE *fp;
clock_t end;
struct timeval time1,time2;
gettimeofday(&time1,NULL);
fp=fopen("data.dat","r");
a=(char*)malloc(size*size);
for(i=0;i<size;i++)
for (j=0;j<size;j++)
a[i*size+j]=fgetc(fp);
for(i=0;i<size;i++)
for(j=0;j<size;j++)
for(k=0;k<step;k++)
temp=a[i*size+j]*a[i*size+j];
end=clock();
gettimeofday(&time2,NULL);
time2.tv_sec-=time1.tv_sec;
time2.tv_usec-=time1.tv_usec;
if(time2.tv_usec<0L)
{
time2.tv_usec+=1000000L;
time2.tv_sec-=1;
}
printf("CPU time is: %f\n",end/1000000.0);
printf("Wall clock time is: %ld.%6ld seconds\n",time2.tv_sec, time2.tv_usec);
free(a);
return 0;
}
程序3:
#include
#include
#define size 1000
main()
{
FILE *fp;
int i,j;
fp=fopen("data.dat","w");
srand((int)time(0)); //初始化随机数发生器 for(i=0;i<size;i++)
for (j=0;j<size;j++)
fputc((int)(10.0*rand()/(RAND_MAX+1.0)),fp);
fclose(fp);
}
程序4:
#include
#include
#include
main()
{
int i,j,k;
struct timeval time1,time2;
gettimeofday(&time1,NULL);
scanf(“%d%d%d”,&i,&j,&k);
printf(“%d\n”,i*j*k);
end=clock();
gettimeofday(&time2,NULL);
time2.tv_sec-=time1.tv_sec;
time2.tv_usec-=time1.tv_usec;
if(time2.tv_usec<0L)
{
time2.tv_usec+=1000000L;
time2.tv_sec-=1;
}
printf("CPU time is: %f\n",end/1000000.0);
printf("Wall clock time is:%ld.%6ld seconds\n",time2.tv_sec, time2.tv_usec);
return 0;
}
看了一下,发现没看出来,真是尴尬。
贴出来报什么错误。你的程序还涉及输入输出文件读写,这个没办法直接帮你调试。
这是linux的头文件,windows下用include <windows.h>