diff options
author | 2020-03-10 10:15:53 +0200 | |
---|---|---|
committer | 2020-03-10 10:15:53 +0200 | |
commit | 61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85 (patch) | |
tree | 6732e0e6847cc860c98bb9bfa7e5a5619d3504e2 /src/main.c | |
parent | 9eb76eda865dc4f82fd53223e5c557f707b569b9 (diff) | |
download | algos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.tar.gz algos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.tar.bz2 algos-ld1-61c3a9aa7a636ada2cedd5b6025d5c7ccc598c85.zip |
bolt on data generation, kind of.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -1,3 +1,7 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ + +/* Copyright (C) 2020 Gediminas Jakutis */ + #include <errno.h> #include <stddef.h> #include <stdlib.h> @@ -6,9 +10,6 @@ #include "io.h" #include "defs.h" -static const unsigned int FLAG_DATA_FORMAT = (1 << 0); -static const unsigned int FLAG_DATA_ACCESS = (1 << 1); - static char randfile[] = "/dev/urandom"; static struct settings settings = {0}; @@ -62,13 +63,13 @@ static int parseargs(int argc, char **argv, struct settings * settings) } else if (!(strcmp(argv[i], "--generate"))) { s.opmode = mode_generate; } else if (!(strcmp(argv[i], "--array"))) { - s.opmode &= ~FLAG_DATA_FORMAT; + s.format = array; } else if (!(strcmp(argv[i], "--list"))) { - s.opmode |= FLAG_DATA_FORMAT; + s.format = list; } else if (!(strcmp(argv[i], "--cache"))) { - s.opmode &= ~FLAG_DATA_ACCESS; + s.access = cached; } else if (!(strcmp(argv[i], "--no-cache"))) { - s.opmode |= FLAG_DATA_ACCESS; + s.access = direct; } else if (!(strncmp(argv[i], "--position=", 11))) { if (strlen(argv[i]) > 11) { s.ss = strtoul(argv[i] + 11, NULL, 10); @@ -104,13 +105,17 @@ static int parseargs(int argc, char **argv, struct settings * settings) if (s.opmode == mode_generate) { - /* we always generate in-memory for speed */ - s.opmode &= ~FLAG_DATA_ACCESS; + /* we always generate in-memory for PERFORMANCE */ + s.access = cached; + if (s.format == list) { + /* we need to generate the empty header, too */ + ++s.to; + } } else if (s.opmode == mode_fetch) { s.to = s.ss + s.to; } - s.stride = s.opmode & FLAG_DATA_FORMAT ? sizeof(struct entry_l) : sizeof(struct entry); + s.stride = s.format == list ? sizeof(struct entry_l) : sizeof(struct entry); *settings = s; |