6 static int scmp(const void *a, const void *b)
8 return strcmp(*(char **)a, *(char **)b);
11 static int icmp(const void *a, const void *b)
13 return *(int*)a - *(int*)b;
16 /* 26 items -- even */
18 "Bob", "Alice", "John", "Ceres",
19 "Helga", "Drepper", "Emeralda", "Zoran",
20 "Momo", "Frank", "Pema", "Xavier",
21 "Yeva", "Gedun", "Irina", "Nono",
22 "Wiener", "Vincent", "Tsering", "Karnica",
23 "Lulu", "Quincy", "Osama", "Riley",
26 /* 23 items -- odd, prime */
28 879045, 394, 99405644, 33434, 232323, 4334, 5454,
29 343, 45545, 454, 324, 22, 34344, 233, 45345, 343,
30 848405, 3434, 3434344, 3535, 93994, 2230404, 4334
33 void test_qsort(void) {
36 qsort(s, sizeof(s)/sizeof(char *), sizeof(char *), scmp);
37 for (i=0; i<sizeof(s)/sizeof(char *)-1; i++) {
38 if (strcmp(s[i], s[i+1]) > 0) {
39 error("string sort failed at index %d\n", i);
40 for (i=0; i<sizeof(s)/sizeof(char *); i++)
41 fprintf(stderr, "\t%d\t%s\n", i, s[i]);
46 qsort(n, sizeof(n)/sizeof(int), sizeof(int), icmp);
47 for (i=0; i<sizeof(n)/sizeof(int)-1; i++) {
49 error("integer sort failed at index %d\n", i);
50 for (i=0; i<sizeof(n)/sizeof(int); i++)
51 fprintf(stderr, "\t%d\t%d\n", i, n[i]);
57 void bench_qsort_small(int N) {
59 int *a = malloc(sizeof n);
61 for (i = 0; i < N; i++) {
62 memcpy(a, n, sizeof n);
63 qsort(a, sizeof n/sizeof *n, sizeof *a, icmp);
68 void bench_qsort_large(int N) {
71 int *a = malloc(len * sizeof *a);
73 for (i = 0; i < N; i++) {
75 for (j = 0; j < len; j++)
77 qsort(a, len, sizeof *a, icmp);