6 #define MAX(a,b) ((a)>(b)?(a):(b))
7 #define MIN(a,b) ((a)<(b)?(a):(b))
12 #include <sys/times.h>
15 static void start_timer()
20 static double end_timer()
23 return((tp2.tms_utime - tp1.tms_utime)/(1.0*CLK_TCK));
26 #elif (defined(LINUX))
28 #include <sys/resource.h>
29 struct rusage tp1,tp2;
31 static void start_timer()
33 getrusage(RUSAGE_SELF,&tp1);
37 static double end_timer()
39 getrusage(RUSAGE_SELF,&tp2);
40 return((tp2.ru_utime.tv_sec - tp1.ru_utime.tv_sec) +
41 (tp2.ru_utime.tv_usec - tp1.ru_utime.tv_usec)*1.0e-6);
48 struct timeval tp1,tp2;
50 static void start_timer()
52 gettimeofday(&tp1,NULL);
55 static double end_timer()
57 gettimeofday(&tp2,NULL);
58 return((tp2.tv_sec - tp1.tv_sec) +
59 (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
66 static void dumpval(double val)
68 fwrite((void *)&val,sizeof(val),1,f);
73 static void memcpy_test(int size)
76 int loops = 5.0e8 / size;
77 char *p1 = (char *)malloc(size);
78 char *p2 = (char *)malloc(size);
91 dumpval(*(double *)p1);
92 dumpval(*(double *)p2);
95 printf("%g Mb/S\n",i*2.0*size/(1.0e6*t));
107 #define ADD_SIZE 1*1024
109 f = fopen("/dev/null","w");
111 printf("Floating point - sin() - ");
114 for (i=0;i<loops;i++)
117 printf("%g MOPS\n",loops/(1.0e6*t));
120 printf("Floating point - log() - ");
123 for (i=0;i<loops;i++)
124 d += log((double)(i+1));
126 printf("%g MOPS\n",loops/(1.0e6*t));
129 printf("Memcpy - 1kB - ");
132 printf("Memcpy - 100kB - ");
133 memcpy_test(1024*100);
135 printf("Memcpy - 1MB - ");
136 memcpy_test(1024*1024);
138 printf("Memcpy - 10MB - ");
139 memcpy_test(1024*1024*10);
142 printf("Adding integers - ");
145 int *p1 = (int *)malloc(l*sizeof(int));
150 for (i=0;i<loops/100;i++)
161 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));
163 printf("Adding floats (size %d) - ",sizeof(float));
166 float *p1 = (float *)malloc(l*sizeof(float));
171 for (i=0;i<loops/100;i++)
182 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));
184 printf("Adding doubles (size %d) - ",sizeof(double));
187 double *p1 = (double *)malloc(l*sizeof(double));
192 for (i=0;i<loops/100;i++)
203 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));