串行直方圖程序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#define MAXLINE 10000001
int 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 \n");
exit(1);
}
i=0;
while(fgets(ptc, 10, fp) != NULL && ptc[0] != '\n' && i < MAXLINE)
{
ptd[i] = atof(ptc);
i++;
}
num = i;
free(ptc);
if(fclose(fp)!=0)
{
fprintf(stderr,"Error closing file\n");
}
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("\nread file spend: %f ms\n\ncount datas spend: %f ms\n\n",readCost,countCost);
for(i=0;i<10;i++)
{
printf("%d<=x<%d: %d條\n",i,i+1,count[i]);
}
free(ptd);
return 0;
}