串行直方图程序#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>#define MAXLINE 10000001int main()
{
double *ptd;
char *ptc;
FILE *fp;
int i = 0;
struct timeval t_read;
double readCost=0,countCost=0;
struct timeval t_start,t_end;
double readS, start, finish;
int count[10]={0};
int num=0; ptd = (double *)malloc(MAXLINE * sizeof(double));
ptc = (char *)malloc(10 * sizeof(char)); gettimeofday(&t_read,NULL);
readS = t_read.tv_sec*1000 + t_read.tv_usec/1000.0; if((fp = fopen("data.txt","r")) == NULL)
{
printf("Can"t open
");
exit(1);
}
i=0;
while(fgets(ptc, 10, fp) != NULL && ptc[0] != "
" && i < MAXLINE)
{
ptd[i] = atof(ptc);
i++;
}
num = i;
free(ptc);
if(fclose(fp)!=0)
{
fprintf(stderr,"Error closing file
");
}
gettimeofday(&t_start,NULL);
start = t_start.tv_sec*1000 + t_start.tv_usec/1000.0;
for(i=0; i<num; i++)
{
count[(int)ptd[i]]++;
} gettimeofday(&t_end,NULL);
finish = t_end.tv_sec*1000 + t_end.tv_usec/1000.0; readCost = start - readS;
countCost = finish - start;
printf("
read file spend: %f ms
count datas spend: %f ms
",readCost,countCost); for(i=0;i<10;i++)
{
printf("%d<=x<%d: %d条
",i,i+1,count[i]);
}
free(ptd);
return 0;
}