summaryrefslogtreecommitdiffhomepage
path: root/misc/benchmarks/various/csort_bench.c
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-04-12 15:55:33 -0400
committerrealtradam <[email protected]>2023-04-12 15:55:33 -0400
commit0841165881871ee01b782129be681209aeed2423 (patch)
tree8a76b61dcaab381b6b42305201ae8b6259f6b6c0 /misc/benchmarks/various/csort_bench.c
parent554f3e8acf7855b5d6a90cc68cefb7445460b03c (diff)
parent0516aa3ae823ed9a22b2c5f776948c8447c32c31 (diff)
downloadSTC-modified-0841165881871ee01b782129be681209aeed2423.tar.gz
STC-modified-0841165881871ee01b782129be681209aeed2423.zip
Merge branch 'master' into modified
Diffstat (limited to 'misc/benchmarks/various/csort_bench.c')
-rw-r--r--misc/benchmarks/various/csort_bench.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/misc/benchmarks/various/csort_bench.c b/misc/benchmarks/various/csort_bench.c
index 97885eb8..d5d7fa7c 100644
--- a/misc/benchmarks/various/csort_bench.c
+++ b/misc/benchmarks/various/csort_bench.c
@@ -9,7 +9,7 @@
#include <stc/algo/csort.h>
#define ROTL(d,bits) ((d<<(bits)) | (d>>(8*sizeof(d)-(bits))))
-uint64_t random(uint64_t s[3]) {
+uint64_t romutrio(uint64_t s[3]) {
uint64_t xp = s[0], yp = s[1], zp = s[2];
s[0] = 15241094284759029579u * zp;
s[1] = yp - xp; s[1] = ROTL(s[1], 12);
@@ -17,12 +17,18 @@ uint64_t random(uint64_t s[3]) {
return xp;
}
+static int cmp_int(const void* a, const void* b) {
+ return c_default_cmp((const int*)a, (const int*)b);
+}
+
void testsort(int *a, int size, const char *desc) {
clock_t t = clock();
#ifdef __cplusplus
- { printf("std::sort: "); std::sort(a, a + size); }
+ printf("std::sort: "); std::sort(a, a + size);
+#elif defined QSORT
+ printf("qsort: "); qsort(a, size, sizeof *a, cmp_int);
#else
- { printf("stc_sort: "); csort_int(a, size); }
+ printf("stc_sort: "); csort_int(a, size);
#endif
t = clock() - t;
@@ -39,7 +45,7 @@ int main(int argc, char *argv[]) {
if (!a) return -1;
for (i = 0; i < size; i++)
- a[i] = random(s) & (1U << 30) - 1;
+ a[i] = romutrio(s) & (1U << 30) - 1;
testsort(a, size, "random");
for (i = 0; i < 20; i++)
printf(" %d", (int)a[i]);