11 #define MAX(a,b) ((a)>(b)?(a):(b))
12 #define MIN(a,b) ((a)<(b)?(a):(b))
17 #include <sys/times.h>
20 static void start_timer()
25 static double end_timer()
28 return((tp2.tms_utime - tp1.tms_utime)/(1.0*CLK_TCK));
31 #elif (defined(LINUX))
33 #include <sys/resource.h>
34 struct rusage tp1,tp2;
36 static void start_timer()
38 getrusage(RUSAGE_SELF,&tp1);
42 static double end_timer()
44 getrusage(RUSAGE_SELF,&tp2);
45 return((tp2.ru_utime.tv_sec - tp1.ru_utime.tv_sec) +
46 (tp2.ru_utime.tv_usec - tp1.ru_utime.tv_usec)*1.0e-6);
53 struct timeval tp1,tp2;
55 static void start_timer()
57 gettimeofday(&tp1,NULL);
60 static double end_timer()
62 gettimeofday(&tp2,NULL);
63 return((tp2.tv_sec - tp1.tv_sec) +
64 (tp2.tv_usec - tp1.tv_usec)*1.0e-6);
71 static void dumpval(double val)
73 fwrite((void *)&val,sizeof(val),1,f);
78 static void memcpy_test(int size)
81 int loops = 5.0e8 / size;
82 char *p1 = (char *)malloc(size+100);
83 char *p2 = (char *)malloc(size+100);
91 memcpy(p1+16,p2,size);
92 memcpy(p2+16,p1,size);
96 dumpval(*(double *)p1);
97 dumpval(*(double *)p2);
100 printf("%g Mb/S\n",i*2.0*size/(1.0e6*t));
112 #define ADD_SIZE 1*1024
114 f = fopen("/dev/null","w");
116 printf("Floating point - sin() - ");
119 for (i=0;i<loops;i++)
122 printf("%g MOPS\n",loops/(1.0e6*t));
125 printf("Floating point - log() - ");
128 for (i=0;i<loops;i++)
129 d += log((double)(i+1));
131 printf("%g MOPS\n",loops/(1.0e6*t));
134 printf("Memcpy - 1kB - ");
137 printf("Memcpy - 100kB - ");
138 memcpy_test(1024*100);
140 printf("Memcpy - 1MB - ");
141 memcpy_test(1024*1024);
143 printf("Memcpy - 10MB - ");
144 memcpy_test(1024*1024*10);
147 printf("Adding integers - ");
150 int *p1 = (int *)malloc(l*sizeof(int));
156 for (i=0;i<loops/100;i++)
167 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));
169 printf("Adding floats (size %d) - ",sizeof(float));
172 float *p1 = (float *)malloc(l*sizeof(float));
177 for (i=0;i<loops/100;i++)
188 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));
190 printf("Adding doubles (size %d) - ",sizeof(double));
193 double *p1 = (double *)malloc(l*sizeof(double));
198 for (i=0;i<loops/100;i++)
209 printf("%g MOPS\n",0.01*(loops*l)/(1.0e6*t));