4 * $DragonFly: src/test/sysperf/memzero.c,v 1.1 2004/04/29 16:14:53 dillon Exp $
11 void test_using(const char *ctl
, char *buf
, int bytes
, void (*zerof
)(void *d
, size_t bytes
));
13 extern void dozero1(void *d
, size_t bytes
);
14 extern void dozero2(void *d
, size_t bytes
);
15 extern void dozero3(void *d
, size_t bytes
);
16 extern void dozero4(void *d
, size_t bytes
);
17 extern void dozero5(void *d
, size_t bytes
);
18 extern void dozero6(void *d
, size_t bytes
);
19 extern void dozero7(void *d
, size_t bytes
);
20 extern void fpcleanup(void);
23 main(int ac
, char **av
)
30 fprintf(stderr
, "%s bytes\n", av
[0]);
34 bytes
= strtol(av
[1], &ptr
, 0);
46 bytes
*= 1024 * 1024 * 1024;
51 fprintf(stderr
, "suffix '%s' not understood\n");
54 if (bytes
<= 0 && (bytes
& 127)) {
55 fprintf(stderr
, "# of bytes must be a multiple of 128\n");
59 buf
= mmap(NULL
, bytes
* 2, PROT_READ
|PROT_WRITE
, MAP_SHARED
|MAP_ANON
, -1, 0);
60 if (buf
== MAP_FAILED
) {
61 perror("mmap/buffer");
64 bzero(buf
, bytes
* 2);
66 test_using("bzero", buf
, bytes
, (void *)bzero
);
67 test_using("dozero1", buf
, bytes
, dozero1
);
68 test_using("dozero2", buf
, bytes
, dozero2
);
69 test_using("dozero3", buf
, bytes
, dozero3
);
70 test_using("dozero4", buf
, bytes
, dozero4
);
71 test_using("dozero5", buf
, bytes
, dozero5
);
72 test_using("dozero6", buf
, bytes
, dozero6
);
73 test_using("dozero7", buf
, bytes
, dozero7
);
78 test_using(const char *ctl
, char *buf
, int bytes
, void (*zerof
)(void *d
, size_t bytes
))
85 for (i
= 0; (i
& 31) || stop_timing(0, NULL
) == 0; ++i
) {
91 for (i
= loops
- 1; i
>= 0; --i
) {
95 stop_timing(loops
, ctl
);
97 printf("%s %d %5.2f MBytes/sec\n", ctl
, bytes
,
98 (double)loops
* (double)bytes
/ (double)us
);