From dd775090878854ccfe65310f9457ce3e393c070d Mon Sep 17 00:00:00 2001 From: Vladimir Azarov Date: Mon, 18 Aug 2025 03:59:02 +0200 Subject: Benchmark files --- test/benchmarks/ins-sort.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 test/benchmarks/ins-sort.c (limited to 'test/benchmarks/ins-sort.c') diff --git a/test/benchmarks/ins-sort.c b/test/benchmarks/ins-sort.c new file mode 100644 index 0000000..939be81 --- /dev/null +++ b/test/benchmarks/ins-sort.c @@ -0,0 +1,71 @@ +void *malloc(unsigned long); +int printf(char *, ...); +long atol(char *); +void exit(int); +int open(char *, int, int); +long read(int, void *, unsigned long); + +void insertion_sort(int *a, long n) +{ + long i, j; + for (i = 1; i < n; ++i) { + for (j = i; j > 0; --j) { + if (a[j] < a[j-1]) { + int tmp = a[j]; + a[j] = a[j-1]; + a[j-1] = tmp; + } else { + break; + } + } + } +} + +void *read_arr(int fd, int *len) +{ + int size = 1024 * 1024 * 20; + int i; + char *arr = malloc(size); + + for (i = 0; ; ) { + int rd = read(fd, arr + i, size - i); + if (rd == -1) + exit(2); + if (rd == 0) + break; + i += rd; + } + printf("input is collected\n"); + *len = i; + return arr; +} + +int main(int argc, char **argv) +{ + int i, len; + unsigned int sum = 0; + int *arr; + int fd; + + if (argc != 2) { + printf("%d\n", argc); + return 1; + } + + len = atol(argv[1]); + fd = open(argv[1], 0, 0); + if (fd == -1) + return 1; + arr = read_arr(fd, &len); + + len /= 4; + + if (len != 64000) + return 10; + + insertion_sort(arr, len); + for (i = 0; i < len; ++i) + sum = 2 * sum + arr[i]; + printf("%u\n", sum); + return 0; +} -- cgit v1.2.3