歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 串行直方圖程序

串行直方圖程序

日期:2017/3/1 9:58:23   编辑:Linux編程

串行直方圖程序

#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;
}

Copyright © Linux教程網 All Rights Reserved