From 3059bc8a25367eb13fb3dd7113739118337503b0 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Fri, 2 Oct 2020 12:28:54 +0100 Subject: [PATCH 01/14] Benchmarks: Added generation script --- .gitignore | 3 ++- Makefile | 31 ++++++++++++++++++++++++- scripts/generate_bench_data.sh | 41 ++++++++++++++++++++++++++++++++++ src/benchmark/generate.c | 26 +++++++++++++++++++++ 4 files changed, 99 insertions(+), 2 deletions(-) create mode 100755 scripts/generate_bench_data.sh create mode 100644 src/benchmark/generate.c diff --git a/.gitignore b/.gitignore index 2c19aa0..830c7d8 100644 --- a/.gitignore +++ b/.gitignore @@ -55,4 +55,5 @@ dkms.conf bin build -temp \ No newline at end of file +temp +data/benchmark \ No newline at end of file diff --git a/Makefile b/Makefile index a720be5..61ed96b 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,11 @@ TEST_BUILD_DIR = $(BUILD_DIR)/test TEST_LIST = $(TEST_SRC_LIST:%.c=%) TEST_SRC_LIST = $(notdir $(wildcard $(TEST_SRC_DIR)/*test*.c)) TEST_OBJ_LIST = $(addprefix $(TEST_BUILD_DIR)/,$(TEST_LIST:%=%.o)) +BENCH_SRC_DIR = $(SRC_DIR)/benchmark +BENCH_BUILD_DIR= $(BUILD_DIR)/benchmark +BENCH_LIST = $(BENCH_SRC_LIST:%.c=%) +BENCH_SRC_LIST = $(notdir $(wildcard $(BENCH_SRC_DIR)/*.c)) +BENCH_OBJ_LIST = $(addprefix $(BENCH_BUILD_DIR)/,$(BENCH_LIST:%=%.o)) INSTALL_DIR = /usr/local/bin DATA_DIR = ./data TEMP_DIR = ./temp @@ -117,4 +122,28 @@ comparisons: mkdir test-mkdir $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_files.o $(TEST_SRC_DIR)/compare_files.c $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_directories.o $(TEST_SRC_DIR)/compare_directories.c $(LD) -o $(BIN_DIR)/compare-files $(TEST_BUILD_DIR)/compare_files.o - $(LD) -o $(BIN_DIR)/compare-dirs $(TEST_BUILD_DIR)/compare_directories.o \ No newline at end of file + $(LD) -o $(BIN_DIR)/compare-dirs $(TEST_BUILD_DIR)/compare_directories.o + +.PHONY: benchmark +benchmark: $(DATA_DIR)/benchmark bench-build + +.PHONY: bench-mkdir +bench-mkdir: + mkdir -p $(BENCH_BUILD_DIR) + +.PHONY: bench-build +bench-build: bench-mkdir bench-compile + +.PHONY: bench-compile +bench-compile: $(BENCH_OBJ_LIST) + $(LD) $(CFLAG) -o $(BIN_DIR)/generate $(BENCH_OBJ_LIST) + +$(BENCH_BUILD_DIR)/%.o: + $(CC) -c $(CFLAG) -o $@ $(BENCH_SRC_DIR)/$(notdir $(@:%.o=%.c)) + +$(DATA_DIR)/benchmark: + scripts/generate_bench_data.sh $(BIN_DIR)/generate $(DATA_DIR)/benchmark + + +$(TEST_BUILD_DIR)/%.o: + $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) \ No newline at end of file diff --git a/scripts/generate_bench_data.sh b/scripts/generate_bench_data.sh new file mode 100755 index 0000000..8d3a687 --- /dev/null +++ b/scripts/generate_bench_data.sh @@ -0,0 +1,41 @@ +#!/usr/bin/bash +GEN=$1 +DIR=$2 + +mkdir -p $DIR + +DEFAULT_ROWS='100' +DEFAULT_COLS='100' +DEFAULT_CELL='10' + +FNAME=$DEFAULT_ROWS'_'$DEFAULT_COLS'_'$DEFAULT_CELL'.csv' +printf "Generating %s..." $FNAME +$($GEN $DEFAULT_ROWS $DEFAULT_COLS $DEFAULT_CELL > $DIR/$FNAME) +printf "DONE\n" + +BENCH_ROWS='1' +for i in {1..7}; do + BENCH_ROWS+='0' + FNAME=$BENCH_ROWS'_'$DEFAULT_COLS'_'$DEFAULT_CELL'.csv' + printf "Generating %s..." $FNAME + $($GEN $BENCH_ROWS $DEFAULT_COLS $DEFAULT_CELL > $DIR/$FNAME) + printf "DONE\n" +done + +BENCH_COLS='1' +for i in {1..7}; do + BENCH_COLS+='0' + FNAME=$DEFAULT_ROWS'_'$BENCH_COLS'_'$DEFAULT_CELL'.csv' + printf "Generating %s..." $FNAME + $($GEN $DEFAULT_ROWS $BENCH_COLS $DEFAULT_CELL > $DIR/$FNAME) + printf "DONE\n" +done + +BENCH_CELL='1' +for i in {1..6}; do + BENCH_CELL+='0' + FNAME=$DEFAULT_ROWS'_'$DEFAULT_COLS'_'$BENCH_CELL'.csv' + printf "Generating %s..." $FNAME + $($GEN $DEFAULT_ROWS $DEFAULT_COLS $BENCH_CELL > $DIR/$FNAME) + printf "DONE\n" +done \ No newline at end of file diff --git a/src/benchmark/generate.c b/src/benchmark/generate.c new file mode 100644 index 0000000..46b9349 --- /dev/null +++ b/src/benchmark/generate.c @@ -0,0 +1,26 @@ +#include +#include +#include + +int main(int argc, char **argv) { + if (argc != 4) { + fprintf(stderr, "Expected 3 argumens, found %d\n", argc); + exit(1); + } + int num_rows = atoi(argv[1]); + int num_cols = atoi(argv[2]); + int len_col = atoi(argv[3]); + size_t len_row = num_cols * (len_col + 1); + char *row_buffer = malloc(len_row * sizeof(char)); + int i, j; + for (i = 0; i < len_row - 1; i += len_col + 1) { + for (j = 0; j < len_col; j++) { + row_buffer[i + j] = 'A'; + } + row_buffer[i + j] = ','; + } + row_buffer[i-1] = '\0'; + for (i = 0; i < num_rows; i++) { + printf("%s\n", row_buffer); + } +} \ No newline at end of file From 01a10c602db599aaed71f48b88ffe681189f8c32 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Fri, 2 Oct 2020 14:30:58 +0100 Subject: [PATCH 02/14] Fixed bug where getline would reallocate line buffers for every input. --- src/split.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/split.c b/src/split.c index 7b76e74..e2e62a3 100644 --- a/src/split.c +++ b/src/split.c @@ -217,27 +217,26 @@ static void process_batch( struct Batch *output) { // Buffer that holds all the necessary information // for the current set of lines. LOG("Processing batch.\n"); - char *line; - size_t len; - size_t i; + char **line; + size_t *len, i; ssize_t read; char *value_buffer[output->column_count]; sprintf(output->file_name, "%s%lu.csv", config->new_file_name, file_count++); for (i = 0; i < config->line_count; i++) { - line = (output->lines)[i]; - len = (output->line_lengths)[i]; - read = getline(&line, &len, file); + line = output->lines + i; + len = output->line_lengths + i; + size_t before = *len; + read = getline(line, len, file); if (read == -1) { if (config->include_remainders) { LOG("Writing remainders\n"); - output->line_count = i; - write_batch(config, headers, output); + break; } return; } load_values( config, - line, + *line, input_column_count, output->column_count, value_buffer); @@ -276,6 +275,9 @@ static void initialise_batch( q++) { *q = 0; } + for (char **r = batch->lines; r - batch->lines < max_lines; r++) { + *r = NULL; + } } batch->line_count = 0; batch->column_count = cols; From a92e3d286be57ea1dcb08889d5d0b330516ec671 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Fri, 2 Oct 2020 14:43:00 +0100 Subject: [PATCH 03/14] Added initial line buffers --- src/flags.c | 4 ++-- src/split.c | 7 +++---- src/split.h | 3 ++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/flags.c b/src/flags.c index 4866237..25945a7 100644 --- a/src/flags.c +++ b/src/flags.c @@ -67,7 +67,7 @@ static size_t parse_flag_by_index( return *at += 2; // Read extra argument. case EXCLUDE_HEADERS: cfg->exclude_headers = 1; return *at += 1; case LINE_COUNT: - if (at + 1 == argc) { + if (*at + 1 == argc) { ERR_LOG("Expected line count. Use --help to learn more.\n"); exit(PARSE_ERR); } @@ -90,7 +90,7 @@ static size_t parse_flag_by_index( cfg->delimiter = argv[arg_at][0]; return *at += 2; case REMOVE_COLUMNS: - if (at + 1 == argc) { // Any string will be treated as a file name, as + if (*at + 1 == argc) { // Any string will be treated as a file name, as // lon as it's there. ERR_LOG("Expected file name. Use --help to learn more.\n"); exit(PARSE_ERR); diff --git a/src/split.c b/src/split.c index e2e62a3..eedc3fc 100644 --- a/src/split.c +++ b/src/split.c @@ -225,7 +225,6 @@ static void process_batch( for (i = 0; i < config->line_count; i++) { line = output->lines + i; len = output->line_lengths + i; - size_t before = *len; read = getline(line, len, file); if (read == -1) { if (config->include_remainders) { @@ -266,17 +265,17 @@ static void initialise_batch( batch->values = malloc(max_lines * sizeof(char **)); batch->line_lengths = malloc(max_lines * sizeof(size_t)); batch->file_name = - malloc(strlen(config->new_file_name) + FILE_NAME_SUFFIX_BUFFER); + malloc(strlen(config->new_file_name) + LEN_FILE_NAME_SUFFIX_BUFFER); for (char ***p = batch->values; p - batch->values < max_lines; p++) { LOG("Allocating sub_values\n"); *p = malloc(cols * sizeof(char *)); } for (size_t *q = batch->line_lengths; q - batch->line_lengths < max_lines; q++) { - *q = 0; + *q = LEN_INITIAL_LINE_BUFFER; } for (char **r = batch->lines; r - batch->lines < max_lines; r++) { - *r = NULL; + *r = malloc(LEN_INITIAL_LINE_BUFFER * sizeof(char)); } } batch->line_count = 0; diff --git a/src/split.h b/src/split.h index 39812b5..d2011f4 100644 --- a/src/split.h +++ b/src/split.h @@ -1,7 +1,8 @@ #ifndef SPLIT_H #define SPLIT_H -#define FILE_NAME_SUFFIX_BUFFER 128 +#define LEN_FILE_NAME_SUFFIX_BUFFER 128 +#define LEN_INITIAL_LINE_BUFFER 1024 #include "config.h" From 584b4b45205f6087f84de6c82027514a6ab60ed4 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Fri, 2 Oct 2020 18:13:48 +0100 Subject: [PATCH 04/14] Renamed variables to be more consistent.P --- src/config.c | 18 ++++----- src/config.h | 14 +++---- src/flags.c | 16 ++++---- src/flags.h | 3 +- src/split.c | 102 +++++++++++++++++++++++++-------------------------- 5 files changed, 76 insertions(+), 77 deletions(-) diff --git a/src/config.c b/src/config.c index 091b58b..0583782 100644 --- a/src/config.c +++ b/src/config.c @@ -7,12 +7,12 @@ // Fills the fields of a given Config struct with default values. void initialise_config(struct Config *cfg) { - cfg->file_path = DEFAULT_FILE_PATH; - cfg->new_file_name = DEFAULT_NEW_FILE_NAME; - cfg->exclude_headers = DEFAULT_EXCLUDE_HEADERS; - cfg->include_remainders = DEFAULT_INCLUDE_REMAINDERS; - cfg->delimiter = DEFAULT_DELIMITER; - cfg->line_count = DEFAULT_LINE_COUNT; + cfg->in_file_path = DEFAULT_FILE_PATH; + cfg->out_file_path = DEFAULT_NEW_FILE_NAME; + cfg->do_exclude_headers = DEFAULT_EXCLUDE_HEADERS; + cfg->do_include_remainders = DEFAULT_INCLUDE_REMAINDERS; + cfg->delim = DEFAULT_DELIMITER; + cfg->num_lines = DEFAULT_LINE_COUNT; cfg->remove_columns_l = 0; cfg->remove_columns = NULL; cfg->remove_columns_buffer = NULL; @@ -43,14 +43,14 @@ void process_config(struct Config *cfg) { // Big `if` in case we need to add more processing. if (cfg->remove_columns_buffer != NULL) { cfg->remove_columns_l = - count_char(cfg->remove_columns_buffer, cfg->delimiter) + 1; + count_char(cfg->remove_columns_buffer, cfg->delim) + 1; LOG("Found %lu columns to be removed.\n", cfg->remove_columns_l); cfg->remove_columns = malloc(cfg->remove_columns_l * sizeof(char *)); char *begin, *end; end = begin = cfg->remove_columns_buffer; size_t i; for (i = 0; i < cfg->remove_columns_l - 1; i++) { - while (*end != cfg->delimiter) { + while (*end != cfg->delim) { end++; } add_colum_to_remove(cfg, begin, end, i); @@ -69,7 +69,7 @@ void parse_config(struct Config *cfg, const int argc, char **argv) { for (size_t i = 1; i < argc;) { parse_arg(cfg, argc, argv, &i); } - if (!cfg->file_path) { + if (!cfg->in_file_path) { fprintf(HELP_OUT, "Expected input file. Use --help to learn more.\n"); exit(PARSE_ERR); } diff --git a/src/config.h b/src/config.h index e7c0f2b..7904adf 100644 --- a/src/config.h +++ b/src/config.h @@ -8,15 +8,15 @@ struct Config { /* Strings */ - const char *file_path; - const char *new_file_name; + const char *in_file_path; + const char *out_file_path; /* Booleans */ - char exclude_headers; - char include_remainders; + char do_exclude_headers; + char do_include_remainders; /* Other values */ - char delimiter; + char delim; char *remove_columns_buffer; - size_t line_count; + size_t num_lines; size_t remove_columns_l; char **remove_columns; }; @@ -27,7 +27,7 @@ void initialise_config(struct Config *cfg); // Function to parse given command line arguments to cfg fields. void parse_config(struct Config *cfg, const int argc, char **argv); -void process_config(struct Config *config); +void process_config(struct Config *cfg); void print_help(void); diff --git a/src/flags.c b/src/flags.c index 25945a7..172a84d 100644 --- a/src/flags.c +++ b/src/flags.c @@ -63,9 +63,9 @@ static size_t parse_flag_by_index( exit(PARSE_ERR); } arg = argv[arg_at]; - cfg->new_file_name = arg; + cfg->out_file_path = arg; return *at += 2; // Read extra argument. - case EXCLUDE_HEADERS: cfg->exclude_headers = 1; return *at += 1; + case EXCLUDE_HEADERS: cfg->do_exclude_headers = 1; return *at += 1; case LINE_COUNT: if (*at + 1 == argc) { ERR_LOG("Expected line count. Use --help to learn more.\n"); @@ -74,12 +74,12 @@ static size_t parse_flag_by_index( if (!is_natural(argv[arg_at])) { ERR_LOG("Expected valid positive integer as line count.\n"); } - cfg->line_count = atoi(argv[arg_at]); - if (cfg->line_count <= 0) { + cfg->num_lines = atoi(argv[arg_at]); + if (cfg->num_lines <= 0) { ERR_LOG("Line count needs to be greater than zero.\n"); exit(PARSE_ERR); } - LOG("Found line count: %lu\n", cfg->line_count); + LOG("Found line count: %lu\n", cfg->num_lines); return *at += 2; // Read extra argument. case DELIMITER: if (arg_at == argc || @@ -87,7 +87,7 @@ static size_t parse_flag_by_index( ERR_LOG("Expected delimiter. Use --help to learn more.\n"); exit(PARSE_ERR); } - cfg->delimiter = argv[arg_at][0]; + cfg->delim = argv[arg_at][0]; return *at += 2; case REMOVE_COLUMNS: if (*at + 1 == argc) { // Any string will be treated as a file name, as @@ -101,7 +101,7 @@ static size_t parse_flag_by_index( exit(PARSE_ERR); } return *at += 2; - case INCLUDE_REMAINDERS: cfg->include_remainders = 1; return (*at)++; + case INCLUDE_REMAINDERS: cfg->do_include_remainders = 1; return (*at)++; case HELP: print_help(); exit(0); default: exit(PARSE_ERR); } @@ -200,7 +200,7 @@ size_t parse_arg(struct Config *cfg, const int argc, char **argv, size_t *at) { LOG("Parsing argument at %lu\n", *at); if (!is_flag(argv[*at])) { LOG("Found file path\n"); - cfg->file_path = argv[*at]; + cfg->in_file_path = argv[*at]; return (*at)++; } if (!is_long_flag(argv[*at])) { diff --git a/src/flags.h b/src/flags.h index 0aa35ea..939bb6a 100644 --- a/src/flags.h +++ b/src/flags.h @@ -95,8 +95,7 @@ static struct Flag FLAGS[] = { FLAG_INCLUDE_REMAINDERS, FLAG_HELP}; -size_t - parse_arg(struct Config *config, const int argc, char **argv, size_t *at); +size_t parse_arg(struct Config *cfg, const int argc, char **argv, size_t *at); size_t max_flag_length(); diff --git a/src/split.c b/src/split.c index eedc3fc..93e55db 100644 --- a/src/split.c +++ b/src/split.c @@ -57,7 +57,7 @@ static void load_headers( } line_len = remove_linebreak(line, line_len); // Counting columns and replacing delim with constant WORKING_DELIM - *len = strsub(line, cfg->delimiter, WORKING_DELIM) + + *len = strsub(line, cfg->delim, WORKING_DELIM) + 1; // +1 because there is one more field than delimiters. // Inserting column headers *headers = malloc(*len * sizeof(char *)); @@ -75,19 +75,19 @@ static void load_headers( } // How many files have been written. -size_t file_count = 0; +size_t num_files = 0; // Removes the columns specified in the CONFIG from the INCLUDE_COLUMN set. static size_t find_relevant_columns( - const struct Config *config, + const struct Config *cfg, const size_t input_length, char **headers, char *include_column) { size_t output_length = input_length; for (size_t i = 0; i < input_length; i++) { include_column[i] = 1; - for (size_t j = 0; j < config->remove_columns_l; j++) { - if (!strcmp(headers[i], config->remove_columns[j])) { + for (size_t j = 0; j < cfg->remove_columns_l; j++) { + if (!strcmp(headers[i], cfg->remove_columns[j])) { include_column[i] = 0; output_length--; break; @@ -101,7 +101,7 @@ static size_t find_relevant_columns( // array containing only those columns that are not to be excluded by the // config. static void filter_line( - const struct Config *config, + const struct Config *cfg, const size_t input_length, // number of columns in input file char **input, // string values for each input column const char *include_column, // whether the ith column should be written to @@ -127,9 +127,9 @@ static void filter_line( // Holds memory for the current set of lines that is being processed. struct Batch { - size_t line_count; - size_t column_count; - size_t *line_lengths; + size_t num_lines; + size_t num_cols; + size_t *line_lens; char **lines; char ***values; char *file_name; @@ -139,22 +139,22 @@ struct Batch { // copied so they rely on the line buffer being valid. Additionally, the line // buffer is altered to handle those references. static void load_values( - const struct Config *config, + const struct Config *cfg, char *line, // A line buffer containing comma separated values WITHOUT the // linebreak const size_t input_column_count, const size_t output_column_count, char **values) { - size_t actual_column_count; + size_t actual_num_cols; remove_linebreak(line, strlen(line)); if (input_column_count != - (actual_column_count = - strsub(line, config->delimiter, WORKING_DELIM) + 1)) { + (actual_num_cols = + strsub(line, cfg->delim, WORKING_DELIM) + 1)) { fprintf( stderr, "Unexpected number of columns in input. (expected: %lu, found: %lu)\n", input_column_count, - actual_column_count); + actual_num_cols); exit(1); } char *begin, *end, **next_value; @@ -171,45 +171,45 @@ static void load_values( // Writes a single line to F filled with COLUMN_COUNT fields of VALUES separated // by CONFIG->DELIMITER. static void write_line( - const struct Config *config, + const struct Config *cfg, FILE *f, const size_t column_count, char **values) { fprintf(f, "%s", values[0]); // Having less than one column is impossible. for (size_t i = 1; i < column_count; i++) { - fprintf(f, "%c%s", config->delimiter, values[i]); + fprintf(f, "%c%s", cfg->delim, values[i]); } putc('\n', f); } // Writes OUTPUT to the correct file using CONFIG and HEADERS for formatting. static void write_batch( - const struct Config *config, + const struct Config *cfg, char **headers, struct Batch *output) { - LOG("Writing batch #%lu to file (%s).\n", file_count - 1, output->file_name); + LOG("Writing batch #%lu to file (%s).\n", num_files - 1, output->file_name); FILE *f = fopen(output->file_name, "w+"); if (f == NULL) { ERR_LOG( "An error occured opening or creating file #%lu (%s).\n", - file_count - 1, + num_files - 1, output->file_name); exit(1); } - if (!config->exclude_headers) { + if (!cfg->do_exclude_headers) { LOG("Writing headers.\n"); - write_line(config, f, output->column_count, headers); + write_line(cfg, f, output->num_cols, headers); } LOG("Writing values.\n"); - for (size_t i = 0; i < output->line_count; i++) { - write_line(config, f, output->column_count, output->values[i]); + for (size_t i = 0; i < output->num_lines; i++) { + write_line(cfg, f, output->num_cols, output->values[i]); } fclose(f); } // Reads the next set of lines from the input and processes them. static void process_batch( - const struct Config *config, + const struct Config *cfg, FILE *file, const size_t input_column_count, const char *include_column, @@ -217,43 +217,43 @@ static void process_batch( struct Batch *output) { // Buffer that holds all the necessary information // for the current set of lines. LOG("Processing batch.\n"); - char **line; - size_t *len, i; + char **line_ptr; + size_t *len_ptr, i; ssize_t read; - char *value_buffer[output->column_count]; - sprintf(output->file_name, "%s%lu.csv", config->new_file_name, file_count++); - for (i = 0; i < config->line_count; i++) { - line = output->lines + i; - len = output->line_lengths + i; - read = getline(line, len, file); + char *value_buffer[output->num_cols]; + sprintf(output->file_name, "%s%lu.csv", cfg->out_file_path, num_files++); + for (i = 0; i < cfg->num_lines; i++) { + line_ptr = output->lines + i; + len_ptr = output->line_lens + i; + read = getline(line_ptr, len_ptr, file); if (read == -1) { - if (config->include_remainders) { + if (cfg->do_include_remainders) { LOG("Writing remainders\n"); break; } return; } load_values( - config, - *line, + cfg, + *line_ptr, input_column_count, - output->column_count, + output->num_cols, value_buffer); filter_line( - config, + cfg, input_column_count, value_buffer, include_column, - output->column_count, + output->num_cols, output->values[i]); } - output->line_count = i; - write_batch(config, headers, output); + output->num_lines = i; + write_batch(cfg, headers, output); } // Given a new BATCH this function initialises its values to be ready for use. static void initialise_batch( - const struct Config *config, + const struct Config *cfg, struct Batch *batch, const size_t max_lines, const size_t cols) { @@ -263,14 +263,14 @@ static void initialise_batch( batch->lines = malloc(max_lines * sizeof(char *)); LOG("Allocating values\n"); batch->values = malloc(max_lines * sizeof(char **)); - batch->line_lengths = malloc(max_lines * sizeof(size_t)); + batch->line_lens = malloc(max_lines * sizeof(size_t)); batch->file_name = - malloc(strlen(config->new_file_name) + LEN_FILE_NAME_SUFFIX_BUFFER); + malloc(strlen(cfg->out_file_path) + LEN_FILE_NAME_SUFFIX_BUFFER); for (char ***p = batch->values; p - batch->values < max_lines; p++) { LOG("Allocating sub_values\n"); *p = malloc(cols * sizeof(char *)); } - for (size_t *q = batch->line_lengths; q - batch->line_lengths < max_lines; + for (size_t *q = batch->line_lens; q - batch->line_lens < max_lines; q++) { *q = LEN_INITIAL_LINE_BUFFER; } @@ -278,18 +278,18 @@ static void initialise_batch( *r = malloc(LEN_INITIAL_LINE_BUFFER * sizeof(char)); } } - batch->line_count = 0; - batch->column_count = cols; + batch->num_lines = 0; + batch->num_cols = cols; } // Splits a file by lines and writes them to outputs as specified in CFG. void split_csv(const struct Config *cfg) { LOG("Splitting file\n"); - if (access(cfg->file_path, F_OK) == -1) { - fprintf(stderr, "File does not exist. (%s)\n", cfg->file_path); + if (access(cfg->in_file_path, F_OK) == -1) { + fprintf(stderr, "File does not exist. (%s)\n", cfg->in_file_path); exit(EXIT_FAILURE); } - FILE *f = fopen(cfg->file_path, "r"); + FILE *f = fopen(cfg->in_file_path, "r"); // Processing file header. // TODO: Include option to process files without headers. char **input_headers = NULL; @@ -313,7 +313,7 @@ void split_csv(const struct Config *cfg) { output_length); struct Batch output_buffer = {0, 0, NULL, NULL, NULL}; do { - initialise_batch(cfg, &output_buffer, cfg->line_count, output_length); + initialise_batch(cfg, &output_buffer, cfg->num_lines, output_length); process_batch( cfg, f, @@ -321,5 +321,5 @@ void split_csv(const struct Config *cfg) { include_column, output_headers, &output_buffer); - } while (output_buffer.line_count == cfg->line_count); + } while (output_buffer.num_lines == cfg->num_lines); } \ No newline at end of file From 76b390ef0d521ea99b044bf8f72bdcf2b30fc34f Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sat, 3 Oct 2020 11:10:33 +0100 Subject: [PATCH 05/14] Changed version string --- src/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.h b/src/config.h index 7904adf..aa0f40e 100644 --- a/src/config.h +++ b/src/config.h @@ -4,7 +4,7 @@ #include #include -#define CSV_SPLIT_VERSION "v0.0.2" +#define CSV_SPLIT_VERSION "v0.1.0" struct Config { /* Strings */ From 06cedb32f4d5a77b393a35418f53d9c478f84a67 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Fri, 13 Nov 2020 20:16:57 +0000 Subject: [PATCH 06/14] Fixed formatting --- src/split.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/split.c b/src/split.c index 93e55db..16ee526 100644 --- a/src/split.c +++ b/src/split.c @@ -148,8 +148,7 @@ static void load_values( size_t actual_num_cols; remove_linebreak(line, strlen(line)); if (input_column_count != - (actual_num_cols = - strsub(line, cfg->delim, WORKING_DELIM) + 1)) { + (actual_num_cols = strsub(line, cfg->delim, WORKING_DELIM) + 1)) { fprintf( stderr, "Unexpected number of columns in input. (expected: %lu, found: %lu)\n", @@ -223,9 +222,9 @@ static void process_batch( char *value_buffer[output->num_cols]; sprintf(output->file_name, "%s%lu.csv", cfg->out_file_path, num_files++); for (i = 0; i < cfg->num_lines; i++) { - line_ptr = output->lines + i; - len_ptr = output->line_lens + i; - read = getline(line_ptr, len_ptr, file); + line_ptr = output->lines + i; + len_ptr = output->line_lens + i; + read = getline(line_ptr, len_ptr, file); if (read == -1) { if (cfg->do_include_remainders) { LOG("Writing remainders\n"); @@ -262,7 +261,7 @@ static void initialise_batch( // memory. batch->lines = malloc(max_lines * sizeof(char *)); LOG("Allocating values\n"); - batch->values = malloc(max_lines * sizeof(char **)); + batch->values = malloc(max_lines * sizeof(char **)); batch->line_lens = malloc(max_lines * sizeof(size_t)); batch->file_name = malloc(strlen(cfg->out_file_path) + LEN_FILE_NAME_SUFFIX_BUFFER); @@ -270,16 +269,15 @@ static void initialise_batch( LOG("Allocating sub_values\n"); *p = malloc(cols * sizeof(char *)); } - for (size_t *q = batch->line_lens; q - batch->line_lens < max_lines; - q++) { + for (size_t *q = batch->line_lens; q - batch->line_lens < max_lines; q++) { *q = LEN_INITIAL_LINE_BUFFER; } for (char **r = batch->lines; r - batch->lines < max_lines; r++) { *r = malloc(LEN_INITIAL_LINE_BUFFER * sizeof(char)); } } - batch->num_lines = 0; - batch->num_cols = cols; + batch->num_lines = 0; + batch->num_cols = cols; } // Splits a file by lines and writes them to outputs as specified in CFG. From 10c6bfb26a8ecbf6c1e9e4fe416cb1d137ea41a5 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 11:15:31 +0000 Subject: [PATCH 07/14] Removed unhelpful LOG messages --- src/split.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/split.c b/src/split.c index 16ee526..5f1aabc 100644 --- a/src/split.c +++ b/src/split.c @@ -111,7 +111,6 @@ static void filter_line( if (output_length == input_length) { // If there's nothing to filter, we can // just copy the enitre array. memcpy(output, input, input_length * sizeof(char *)); - LOG("Skipped filtering because input and output sizes are identical.\n"); return; } size_t i, j; @@ -164,7 +163,6 @@ static void load_values( *(next_value++) = begin; begin = end; } - LOG("Wrote %lu values\n", next_value - values); } // Writes a single line to F filled with COLUMN_COUNT fields of VALUES separated @@ -266,7 +264,6 @@ static void initialise_batch( batch->file_name = malloc(strlen(cfg->out_file_path) + LEN_FILE_NAME_SUFFIX_BUFFER); for (char ***p = batch->values; p - batch->values < max_lines; p++) { - LOG("Allocating sub_values\n"); *p = malloc(cols * sizeof(char *)); } for (size_t *q = batch->line_lens; q - batch->line_lens < max_lines; q++) { From 9ddcadb6077f6801ecc3a2282202103123fdb389 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 11:29:02 +0000 Subject: [PATCH 08/14] Updated benchmark data generation script in Python --- Makefile | 2 +- scripts/generate_bench_data.py | 37 ++++++++++++++++++++++++++++++ scripts/generate_bench_data.sh | 41 ---------------------------------- 3 files changed, 38 insertions(+), 42 deletions(-) create mode 100755 scripts/generate_bench_data.py delete mode 100755 scripts/generate_bench_data.sh diff --git a/Makefile b/Makefile index 61ed96b..38e3c0e 100644 --- a/Makefile +++ b/Makefile @@ -142,7 +142,7 @@ $(BENCH_BUILD_DIR)/%.o: $(CC) -c $(CFLAG) -o $@ $(BENCH_SRC_DIR)/$(notdir $(@:%.o=%.c)) $(DATA_DIR)/benchmark: - scripts/generate_bench_data.sh $(BIN_DIR)/generate $(DATA_DIR)/benchmark + scripts/generate_bench_data.py $(BIN_DIR)/generate $(DATA_DIR)/benchmark $(TEST_BUILD_DIR)/%.o: diff --git a/scripts/generate_bench_data.py b/scripts/generate_bench_data.py new file mode 100755 index 0000000..9f262b5 --- /dev/null +++ b/scripts/generate_bench_data.py @@ -0,0 +1,37 @@ +#!/usr/bin/python +import sys +import os +import subprocess + + +def get_file_name(rows, columns, chars): + return f"{rows}_{columns}_{chars}.csv" + + +def generate_file(binary_path, rows, columns, chars, output_dir): + return subprocess.run([ + "sh", "-c", + f"{binary_path} {rows} {columns} {chars} > {output_dir}/{get_file_name(rows, columns,chars)}" + ]) + + +if len(sys.argv) != 3: + print("Expected exactly two arguments: ") + sys.exit(1) + +GEN = sys.argv[1] +DIR = sys.argv[2] + +row_min, row_max, row_step = 100, 10001, 100 +col_min, col_max, col_step = 100, 10001, 100 +chr_min, chr_max, chr_step = 100, 10001, 100 + +if not os.path.isdir(DIR): + os.mkdir(DIR) + +for row in range(row_min, row_max, row_step): + generate_file(GEN, row, col_min, chr_min, DIR) +for col in range(col_min, col_max, col_step): + generate_file(GEN, row_min, col, chr_min, DIR) +for char in range(chr_min, chr_max, chr_step): + generate_file(GEN, row_min, col_min, char, DIR) \ No newline at end of file diff --git a/scripts/generate_bench_data.sh b/scripts/generate_bench_data.sh deleted file mode 100755 index 8d3a687..0000000 --- a/scripts/generate_bench_data.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/bash -GEN=$1 -DIR=$2 - -mkdir -p $DIR - -DEFAULT_ROWS='100' -DEFAULT_COLS='100' -DEFAULT_CELL='10' - -FNAME=$DEFAULT_ROWS'_'$DEFAULT_COLS'_'$DEFAULT_CELL'.csv' -printf "Generating %s..." $FNAME -$($GEN $DEFAULT_ROWS $DEFAULT_COLS $DEFAULT_CELL > $DIR/$FNAME) -printf "DONE\n" - -BENCH_ROWS='1' -for i in {1..7}; do - BENCH_ROWS+='0' - FNAME=$BENCH_ROWS'_'$DEFAULT_COLS'_'$DEFAULT_CELL'.csv' - printf "Generating %s..." $FNAME - $($GEN $BENCH_ROWS $DEFAULT_COLS $DEFAULT_CELL > $DIR/$FNAME) - printf "DONE\n" -done - -BENCH_COLS='1' -for i in {1..7}; do - BENCH_COLS+='0' - FNAME=$DEFAULT_ROWS'_'$BENCH_COLS'_'$DEFAULT_CELL'.csv' - printf "Generating %s..." $FNAME - $($GEN $DEFAULT_ROWS $BENCH_COLS $DEFAULT_CELL > $DIR/$FNAME) - printf "DONE\n" -done - -BENCH_CELL='1' -for i in {1..6}; do - BENCH_CELL+='0' - FNAME=$DEFAULT_ROWS'_'$DEFAULT_COLS'_'$BENCH_CELL'.csv' - printf "Generating %s..." $FNAME - $($GEN $DEFAULT_ROWS $DEFAULT_COLS $BENCH_CELL > $DIR/$FNAME) - printf "DONE\n" -done \ No newline at end of file From 92e7147f4c533c9e35d06b2f74bdc4d3782d7ff0 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 11:29:41 +0000 Subject: [PATCH 09/14] First benchmark including description and visualsiation script --- benchmark/v0.0.2-1.csv | 299 +++++++++++++++++++++++++++++++++ benchmark/v0.0.2-1.md | 14 ++ benchmark/v0.0.2-1.png | Bin 0 -> 73242 bytes scripts/benchmark_miltfra.sh | 22 +++ scripts/visualise_benchmark.py | 65 +++++++ 5 files changed, 400 insertions(+) create mode 100644 benchmark/v0.0.2-1.csv create mode 100644 benchmark/v0.0.2-1.md create mode 100644 benchmark/v0.0.2-1.png create mode 100755 scripts/benchmark_miltfra.sh create mode 100755 scripts/visualise_benchmark.py diff --git a/benchmark/v0.0.2-1.csv b/benchmark/v0.0.2-1.csv new file mode 100644 index 0000000..6e53c6d --- /dev/null +++ b/benchmark/v0.0.2-1.csv @@ -0,0 +1,299 @@ +command,mean,stddev,median,user,system,min,max,parameter_file +bin/csv-split -l 100 data/benchmark/2300_100_100.csv -n ./tmp/split,0.15673962488699994,0.06563031467361495,0.1592951522,0.03475758999999998,0.022442259000000044,0.054609321200000005,0.6946567692,data/benchmark/2300_100_100.csv +bin/csv-split -l 100 data/benchmark/2000_100_100.csv -n ./tmp/split,0.11892247960300004,0.052689036127990654,0.1444139772,0.029938720000000026,0.019387269999999988,0.047558949200000006,0.21556943620000002,data/benchmark/2000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9900.csv -n ./tmp/split,0.12365857614100029,0.0013850023196402413,0.12287329720000001,0.08061733600000003,0.042796925000000006,0.1224851012,0.1306130832,data/benchmark/100_100_9900.csv +bin/csv-split -l 100 data/benchmark/100_5400_100.csv -n ./tmp/split,0.07845312591900003,0.0010145450654237965,0.0778320562,0.05417429799999998,0.024112489999999993,0.0774817402,0.0838781312,data/benchmark/100_5400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4100.csv -n ./tmp/split,0.05132064042000002,0.0006962512785539658,0.051091609700000006,0.03383529299999999,0.017370385999999984,0.050536454200000004,0.055079343200000005,data/benchmark/100_100_4100.csv +bin/csv-split -l 100 data/benchmark/3300_100_100.csv -n ./tmp/split,0.12466649768699994,0.043238690814107895,0.11554888270000001,0.04856440000000003,0.031214653999999988,0.0780892062,0.27622360320000006,data/benchmark/3300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7600.csv -n ./tmp/split,0.09337980060900011,0.0010586883573754494,0.0929890352,0.06220767299999999,0.030944407000000004,0.0921503122,0.10320478720000001,data/benchmark/100_100_7600.csv +bin/csv-split -l 100 data/benchmark/6100_100_100.csv -n ./tmp/split,0.19210833416800005,0.023394676548268597,0.1855978362,0.08983894000000009,0.056866660999999964,0.1438019032,0.4312173872,data/benchmark/6100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8000_100.csv -n ./tmp/split,0.11518928292900008,0.0011042104505544334,0.1147507242,0.07979591199999993,0.03513753600000002,0.1139643362,0.12255250720000001,data/benchmark/100_8000_100.csv +bin/csv-split -l 100 data/benchmark/3400_100_100.csv -n ./tmp/split,0.10423960816000012,0.011482623360758679,0.1031258832,0.05026053899999998,0.03224892500000001,0.0807512622,0.1838679342,data/benchmark/3400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_500_100.csv -n ./tmp/split,0.008011090406999998,0.0005130318407500726,0.0077486887,0.0055361590000000006,0.0024470809999999994,0.0075323692,0.011489196200000001,data/benchmark/100_500_100.csv +bin/csv-split -l 100 data/benchmark/2900_100_100.csv -n ./tmp/split,0.08724159968,0.018389524958910393,0.0753792012,0.042705877000000024,0.027162093999999967,0.0681677332,0.1881537242,data/benchmark/2900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5100.csv -n ./tmp/split,0.062926203295,0.0010689333534906343,0.06245472170000001,0.04188491699999999,0.02089059099999998,0.062069307200000014,0.0696530412,data/benchmark/100_100_5100.csv +bin/csv-split -l 100 data/benchmark/7200_100_100.csv -n ./tmp/split,0.2267174676929999,0.021818853317167874,0.23540311070000003,0.10563168399999988,0.06651705300000002,0.1690123522,0.35728054620000005,data/benchmark/7200_100_100.csv +bin/csv-split -l 100 data/benchmark/9200_100_100.csv -n ./tmp/split,0.29002736570100013,0.02300401314507374,0.29089518570000006,0.1346744419999999,0.08497683599999996,0.2150359142,0.43846736720000007,data/benchmark/9200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4500_100.csv -n ./tmp/split,0.06497085027300004,0.0009423131546945272,0.06441499519999999,0.045417112000000044,0.019420600999999996,0.0641110312,0.0715783882,data/benchmark/100_4500_100.csv +bin/csv-split -l 100 data/benchmark/100_7000_100.csv -n ./tmp/split,0.10017236440400008,0.0010615298249541,0.0996023067,0.07032524199999995,0.029657160999999967,0.0990358852,0.1064058112,data/benchmark/100_7000_100.csv +bin/csv-split -l 100 data/benchmark/100_3400_100.csv -n ./tmp/split,0.049314239206000005,0.0007827053175687814,0.04892798370000001,0.03421552899999996,0.014983288000000016,0.048591157200000006,0.05664059920000001,data/benchmark/100_3400_100.csv +bin/csv-split -l 100 data/benchmark/100_2200_100.csv -n ./tmp/split,0.032306680215000015,0.0006042760012166059,0.032026600200000005,0.022410642999999994,0.00981198799999999,0.031781278200000006,0.04063094020000001,data/benchmark/100_2200_100.csv +bin/csv-split -l 100 data/benchmark/100_5800_100.csv -n ./tmp/split,0.08337861680099996,0.0009878752960289265,0.0828628867,0.058332296999999964,0.024880129999999983,0.0822277052,0.0895222512,data/benchmark/100_5800_100.csv +bin/csv-split -l 100 data/benchmark/100_7300_100.csv -n ./tmp/split,0.10459706479699991,0.001166114184940907,0.1039457297,0.07266828299999993,0.03173224500000002,0.1032039922,0.10813837920000001,data/benchmark/100_7300_100.csv +bin/csv-split -l 100 data/benchmark/5100_100_100.csv -n ./tmp/split,0.1574839264330001,0.013171742456169746,0.1573815092,0.074990894,0.047165546000000017,0.12021797320000001,0.2042939252,data/benchmark/5100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2400.csv -n ./tmp/split,0.030141755742000013,0.0007504017542015181,0.0300749232,0.020156119999999993,0.00989299200000001,0.029525986200000003,0.03810979020000001,data/benchmark/100_100_2400.csv +bin/csv-split -l 100 data/benchmark/100_3800_100.csv -n ./tmp/split,0.054727766702999885,0.0009055944035779221,0.054191408700000006,0.03837902499999998,0.016227689000000003,0.054047056200000006,0.0613016122,data/benchmark/100_3800_100.csv +bin/csv-split -l 100 data/benchmark/100_3700_100.csv -n ./tmp/split,0.05350434278900007,0.0006690435647482104,0.053743875200000006,0.03750592799999999,0.01588013400000001,0.0525964022,0.06054098620000001,data/benchmark/100_3700_100.csv +bin/csv-split -l 100 data/benchmark/100_5600_100.csv -n ./tmp/split,0.080411203127,0.0008967495516655681,0.0799360857,0.05571755200000004,0.024529796000000006,0.0794064662,0.0862030182,data/benchmark/100_5600_100.csv +bin/csv-split -l 100 data/benchmark/3200_100_100.csv -n ./tmp/split,0.097275807278,0.015573966198806938,0.0980403797,0.047306994,0.030104294000000018,0.0756152122,0.1829002632,data/benchmark/3200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2500_100.csv -n ./tmp/split,0.03709036585600002,0.0008539138491186685,0.0367592367,0.025647412,0.011336966999999991,0.0363657932,0.044197591200000004,data/benchmark/100_2500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8000.csv -n ./tmp/split,0.09739277742000012,0.0013367766016210594,0.0966521742,0.06499638700000007,0.03220705299999997,0.09614421620000001,0.1046379312,data/benchmark/100_100_8000.csv +bin/csv-split -l 100 data/benchmark/100_100_4900.csv -n ./tmp/split,0.06093105965299998,0.0010346135545966277,0.06071844220000001,0.040477722000000015,0.02031471599999999,0.05995646820000001,0.0686646882,data/benchmark/100_100_4900.csv +bin/csv-split -l 100 data/benchmark/100_6800_100.csv -n ./tmp/split,0.09709606008000006,0.0010744461075791628,0.0964264352,0.06775273699999997,0.02914938999999999,0.0961949472,0.1037242322,data/benchmark/100_6800_100.csv +bin/csv-split -l 100 data/benchmark/600_100_100.csv -n ./tmp/split,0.014364034821000002,0.0005757498874666788,0.014420215200000001,0.008708476999999994,0.005598491000000004,0.013593825200000001,0.0191644162,data/benchmark/600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9600_100.csv -n ./tmp/split,0.13715729869599996,0.001380222986425655,0.1363019117,0.09636908399999997,0.04053235999999996,0.1358485582,0.1420997022,data/benchmark/100_9600_100.csv +bin/csv-split -l 100 data/benchmark/800_100_100.csv -n ./tmp/split,0.019343241011000014,0.00231489882787192,0.019003368700000002,0.011704139000000014,0.007337091000000005,0.0182973182,0.05041343620000001,data/benchmark/800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4300.csv -n ./tmp/split,0.052678628857999996,0.0009106514494605627,0.05223428670000001,0.035262461999999994,0.017296645999999992,0.05180970520000001,0.060065998200000005,data/benchmark/100_100_4300.csv +bin/csv-split -l 100 data/benchmark/5300_100_100.csv -n ./tmp/split,0.16502094334000003,0.016178837199139432,0.1628921057,0.07783653099999982,0.048890380999999934,0.1241816822,0.29729492920000006,data/benchmark/5300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5900_100.csv -n ./tmp/split,0.08434831253399991,0.0013038916635820278,0.08359876420000001,0.05941153000000004,0.024754490999999986,0.0832454512,0.0938244492,data/benchmark/100_5900_100.csv +bin/csv-split -l 100 data/benchmark/100_2800_100.csv -n ./tmp/split,0.04083455351700008,0.0007989923006693499,0.040877423200000006,0.028273836999999975,0.012462573999999988,0.040070738200000004,0.046631123200000006,data/benchmark/100_2800_100.csv +bin/csv-split -l 100 data/benchmark/100_3500_100.csv -n ./tmp/split,0.050734715102000005,0.0008760159528025997,0.050831471200000006,0.035617038999999975,0.01500148199999999,0.049829716200000006,0.05728786720000001,data/benchmark/100_3500_100.csv +bin/csv-split -l 100 data/benchmark/3900_100_100.csv -n ./tmp/split,0.11987781222499999,0.016178392447987557,0.1209803797,0.057198916999999995,0.03602227799999997,0.0915203722,0.26002796320000005,data/benchmark/3900_100_100.csv +bin/csv-split -l 100 data/benchmark/5400_100_100.csv -n ./tmp/split,0.16746232850499967,0.013917352496992491,0.1687323987,0.07913655499999989,0.051221222000000025,0.1274771472,0.22285779220000002,data/benchmark/5400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5000_100.csv -n ./tmp/split,0.07291522217599994,0.0012629901993253924,0.0727235762,0.05071878399999991,0.022041511999999996,0.0716805082,0.0820203332,data/benchmark/100_5000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2000.csv -n ./tmp/split,0.025493954878999983,0.0008193330011526145,0.0253612317,0.016886712999999998,0.008532657999999995,0.0246536212,0.032407296200000005,data/benchmark/100_100_2000.csv +bin/csv-split -l 100 data/benchmark/100_600_100.csv -n ./tmp/split,0.009712994917,0.0005954159153300818,0.0098540902,0.006600152999999996,0.003078141300000002,0.0089686882,0.0138459092,data/benchmark/100_600_100.csv +bin/csv-split -l 100 data/benchmark/4500_100_100.csv -n ./tmp/split,0.13784672515599997,0.014130521230322733,0.1353061362,0.06616262999999999,0.042258967999999966,0.1061082712,0.2172038152,data/benchmark/4500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6300.csv -n ./tmp/split,0.07692229380299999,0.0009969872361686363,0.0763056782,0.051416403000000034,0.025347347999999974,0.0759299452,0.0839198292,data/benchmark/100_100_6300.csv +bin/csv-split -l 100 data/benchmark/100_2400_100.csv -n ./tmp/split,0.03544707855500004,0.0008398447357980851,0.03543829970000001,0.024167813999999944,0.011182183999999984,0.03467770020000001,0.043338118200000005,data/benchmark/100_2400_100.csv +bin/csv-split -l 100 data/benchmark/1600_100_100.csv -n ./tmp/split,0.04403026646400003,0.009246873175827975,0.038667802700000004,0.023576650999999994,0.015040111000000009,0.0374706512,0.08526782520000001,data/benchmark/1600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7500.csv -n ./tmp/split,0.09086332543099992,0.0010101267983073409,0.0902690142,0.06119115000000004,0.029501738999999985,0.0900306762,0.0989286212,data/benchmark/100_100_7500.csv +bin/csv-split -l 100 data/benchmark/100_3300_100.csv -n ./tmp/split,0.04786730141399998,0.0008323233453594906,0.047461422200000006,0.03340946400000004,0.01434085499999997,0.04715023720000001,0.054970613200000004,data/benchmark/100_3300_100.csv +bin/csv-split -l 100 data/benchmark/100_9000_100.csv -n ./tmp/split,0.12892521230300003,0.001523910979970144,0.1280480757,0.09035964199999995,0.03832131800000001,0.1264595992,0.1360476032,data/benchmark/100_9000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3900.csv -n ./tmp/split,0.04839363584700001,0.0009446294539016177,0.04806613820000001,0.032485753000000055,0.015788912999999988,0.04751221320000001,0.05691699120000001,data/benchmark/100_100_3900.csv +bin/csv-split -l 100 data/benchmark/100_8800_100.csv -n ./tmp/split,0.12651974798899976,0.0013901891101476805,0.1256373017,0.08830961500000008,0.037974171000000015,0.1251989892,0.1328640302,data/benchmark/100_8800_100.csv +bin/csv-split -l 100 data/benchmark/3800_100_100.csv -n ./tmp/split,0.1165912234759999,0.011753833890817742,0.11349387420000001,0.05615357299999999,0.03573240399999999,0.0902900732,0.20293721720000002,data/benchmark/3800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_3100_100.csv -n ./tmp/split,0.04509263553199995,0.0007421864753679443,0.04477751420000001,0.031459344999999986,0.013519642000000004,0.044414528200000004,0.05219423620000001,data/benchmark/100_3100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_800.csv -n ./tmp/split,0.011179392277999979,0.0006329823915058287,0.0112748217,0.0075220479999999895,0.0036140299999999972,0.0102492082,0.0154584272,data/benchmark/100_100_800.csv +bin/csv-split -l 100 data/benchmark/100_7100_100.csv -n ./tmp/split,0.10258079685099986,0.0012430136625951945,0.10187030020000001,0.07162004399999991,0.030768018000000015,0.1013664892,0.1102599942,data/benchmark/100_7100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_400.csv -n ./tmp/split,0.005546341788000002,0.0003111812217926632,0.005425999200000001,0.0037140793500000046,0.0018573532999999994,0.0053113252,0.0078366372,data/benchmark/100_100_400.csv +bin/csv-split -l 100 data/benchmark/100_100_1100.csv -n ./tmp/split,0.01454286423300001,0.0007432440061968355,0.014223490200000001,0.009552627000000008,0.004941596699999999,0.013949053200000002,0.019553286200000002,data/benchmark/100_100_1100.csv +bin/csv-split -l 100 data/benchmark/100_100_200.csv -n ./tmp/split,0.003155828417999999,0.00039045024519554847,0.0029933252000000003,0.0021125330049999963,0.0010929110999999992,0.0027906962,0.005187239200000001,data/benchmark/100_100_200.csv +bin/csv-split -l 100 data/benchmark/100_5100_100.csv -n ./tmp/split,0.07343990771900001,0.0009888267549475636,0.07296916719999999,0.05122646700000002,0.022054673999999993,0.0728177762,0.0818946822,data/benchmark/100_5100_100.csv +bin/csv-split -l 100 data/benchmark/1300_100_100.csv -n ./tmp/split,0.034208535947999975,0.009641318942728435,0.030844916700000002,0.01884478100000001,0.012033149999999994,0.0302568142,0.0822530652,data/benchmark/1300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7800.csv -n ./tmp/split,0.09537557022100007,0.0014902884754795268,0.0944918102,0.06362279300000002,0.03157190699999997,0.0938108342,0.1031152962,data/benchmark/100_100_7800.csv +bin/csv-split -l 100 data/benchmark/100_100_8400.csv -n ./tmp/split,0.10233395980599996,0.0013233210341699509,0.10173512770000001,0.06890975900000001,0.03323311799999999,0.1011007672,0.1111330242,data/benchmark/100_100_8400.csv +bin/csv-split -l 100 data/benchmark/100_100_4200.csv -n ./tmp/split,0.05160423407499999,0.0008905301705792244,0.05101151370000001,0.034394185999999966,0.017094148999999982,0.050824920200000005,0.058972870200000006,data/benchmark/100_100_4200.csv +bin/csv-split -l 100 data/benchmark/100_100_2700.csv -n ./tmp/split,0.03366945504200003,0.0006463050766227159,0.033405161700000005,0.02257719099999998,0.010999874,0.03304041320000001,0.039280290200000005,data/benchmark/100_100_2700.csv +bin/csv-split -l 100 data/benchmark/100_100_8500.csv -n ./tmp/split,0.10339372528500003,0.001112457996543139,0.1028371072,0.070077126,0.03311517000000003,0.1022167962,0.1087490882,data/benchmark/100_100_8500.csv +bin/csv-split -l 100 data/benchmark/5900_100_100.csv -n ./tmp/split,0.18310412016200017,0.018362573334141694,0.17787200920000001,0.08655272600000015,0.05440616300000001,0.13896010620000002,0.30770475720000007,data/benchmark/5900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7700.csv -n ./tmp/split,0.09355102925599994,0.001232201909163913,0.0929095942,0.063253731,0.030108356000000044,0.0922560972,0.10215274120000001,data/benchmark/100_100_7700.csv +bin/csv-split -l 100 data/benchmark/100_8700_100.csv -n ./tmp/split,0.12447307891400025,0.0015997606932678266,0.1237300722,0.08768114999999997,0.036544915999999976,0.12276034820000001,0.1323837982,data/benchmark/100_8700_100.csv +bin/csv-split -l 100 data/benchmark/100_6600_100.csv -n ./tmp/split,0.09401040121800001,0.001144838494262755,0.0933564687,0.06613484000000008,0.027695176999999977,0.0930395292,0.1021141322,data/benchmark/100_6600_100.csv +bin/csv-split -l 100 data/benchmark/7400_100_100.csv -n ./tmp/split,0.23206716646500006,0.024007718090903966,0.23323716020000002,0.10862776500000022,0.06856971699999984,0.1734070482,0.38449127720000004,data/benchmark/7400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_100.csv -n ./tmp/split,0.0017498898229999997,0.000291020842779181,0.0016307097000000004,0.0012337529350000026,0.0006625404000000007,0.0015732552,0.0034703692000000006,data/benchmark/100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9100.csv -n ./tmp/split,0.11026470502200017,0.0015723451896052028,0.1094624297,0.07384738600000003,0.03620136399999998,0.1089694372,0.1208090812,data/benchmark/100_100_9100.csv +bin/csv-split -l 100 data/benchmark/7100_100_100.csv -n ./tmp/split,0.22257359728299977,0.016194182727075762,0.2250279427,0.10437782399999994,0.06697834900000003,0.1682207652,0.2880300612,data/benchmark/7100_100_100.csv +bin/csv-split -l 100 data/benchmark/7000_100_100.csv -n ./tmp/split,0.21968874100799995,0.01611613766207431,0.22121569070000002,0.10318938299999993,0.06631468199999997,0.1656033572,0.28081198420000003,data/benchmark/7000_100_100.csv +bin/csv-split -l 100 data/benchmark/9400_100_100.csv -n ./tmp/split,0.29584642347799955,0.022692252157588532,0.3005149972000001,0.137873358,0.08909509600000018,0.2226244822,0.40245772920000006,data/benchmark/9400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2600_100.csv -n ./tmp/split,0.03812524668999996,0.0004721995690340074,0.03788335270000001,0.026249988999999994,0.011785315999999995,0.03756565220000001,0.040312091200000004,data/benchmark/100_2600_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8600.csv -n ./tmp/split,0.105564731706,0.0012493822815042835,0.1047057817,0.07017802300000002,0.035185172999999965,0.1043943472,0.1119735672,data/benchmark/100_100_8600.csv +bin/csv-split -l 100 data/benchmark/9700_100_100.csv -n ./tmp/split,0.3055878153209997,0.02290009140696347,0.3092657622,0.14284232100000016,0.09145350700000004,0.2286660862,0.38395674820000003,data/benchmark/9700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1900_100.csv -n ./tmp/split,0.027994627203999978,0.000501957998814566,0.0277727667,0.01930407200000001,0.008605944000000008,0.0275923892,0.032406386200000005,data/benchmark/100_1900_100.csv +bin/csv-split -l 100 data/benchmark/1000_100_100.csv -n ./tmp/split,0.02478550597300001,0.003330808939101343,0.024091964700000003,0.014598390999999983,0.009222296000000003,0.0230862062,0.0679135482,data/benchmark/1000_100_100.csv +bin/csv-split -l 100 data/benchmark/6600_100_100.csv -n ./tmp/split,0.2049001967859999,0.01737795196015836,0.20457798770000002,0.09733319300000005,0.06254762700000005,0.1562050112,0.25954184920000006,data/benchmark/6600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1500_100.csv -n ./tmp/split,0.022563888763,0.0007199841190314668,0.022247968200000003,0.015303307000000006,0.007194323999999995,0.022036356200000003,0.0293292232,data/benchmark/100_1500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7200.csv -n ./tmp/split,0.08806050802599999,0.0009371579666750489,0.0876302992,0.0588704210000001,0.029020050000000013,0.0870920022,0.0928136492,data/benchmark/100_100_7200.csv +bin/csv-split -l 100 data/benchmark/7300_100_100.csv -n ./tmp/split,0.2293905325159999,0.01685907697118852,0.22864734920000002,0.10729089000000006,0.06861271100000002,0.1720101092,0.32766113320000007,data/benchmark/7300_100_100.csv +bin/csv-split -l 100 data/benchmark/10000_100_100.csv -n ./tmp/split,0.3155837604570003,0.026219528725545036,0.31649597920000005,0.14714823600000007,0.093244177,0.2348241452,0.41182134020000005,data/benchmark/10000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5400.csv -n ./tmp/split,0.06581908611500002,0.0009677261161479057,0.0653008792,0.04384149500000001,0.02184061500000003,0.0649970012,0.0733270002,data/benchmark/100_100_5400.csv +bin/csv-split -l 100 data/benchmark/100_100_7100.csv -n ./tmp/split,0.08640621780400001,0.0014092480271091416,0.0855484997,0.057797731000000054,0.028439311000000002,0.08518047720000001,0.0961988102,data/benchmark/100_100_7100.csv +bin/csv-split -l 100 data/benchmark/100_7200_100.csv -n ./tmp/split,0.10324852029499998,0.001331240753936966,0.10252576020000001,0.07230087600000003,0.030753733000000005,0.1021385792,0.11117637820000001,data/benchmark/100_7200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_300.csv -n ./tmp/split,0.004398304225000002,0.00043271782007900546,0.0041685142,0.0029435217400000007,0.0014811466000000022,0.0040605472,0.0070873051999999995,data/benchmark/100_100_300.csv +bin/csv-split -l 100 data/benchmark/100_100_10000.csv -n ./tmp/split,0.12256310359299995,0.001252379171811524,0.1220257072,0.0816765219999999,0.04066136600000006,0.1212675862,0.1306114732,data/benchmark/100_100_10000.csv +bin/csv-split -l 100 data/benchmark/100_3200_100.csv -n ./tmp/split,0.046435234275000015,0.0006924707010144516,0.04608021170000001,0.032131501000000014,0.014198608999999994,0.04581836920000001,0.052613338200000005,data/benchmark/100_3200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2100.csv -n ./tmp/split,0.026800059642000027,0.0009054259908502483,0.026624926200000003,0.017754496000000005,0.008961647999999984,0.0259715532,0.0345795762,data/benchmark/100_100_2100.csv +bin/csv-split -l 100 data/benchmark/100_100_4500.csv -n ./tmp/split,0.05534869125300002,0.0009828292132848487,0.05471506520000001,0.03690199799999995,0.018329681999999962,0.05441089620000001,0.06151977720000001,data/benchmark/100_100_4500.csv +bin/csv-split -l 100 data/benchmark/100_200_100.csv -n ./tmp/split,0.003375130219999994,0.00033803658470572866,0.0032666292,0.0023874663050000005,0.0010404713000000008,0.0030424492000000005,0.0054642762,data/benchmark/100_200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3400.csv -n ./tmp/split,0.0419262493650001,0.0006897924713853988,0.04149997870000001,0.027990434000000015,0.013838298999999981,0.04126121120000001,0.04624583620000001,data/benchmark/100_100_3400.csv +bin/csv-split -l 100 data/benchmark/100_6200_100.csv -n ./tmp/split,0.08914597258099995,0.0011192651776991064,0.08894693570000001,0.06263666399999998,0.026335344000000007,0.08783232220000001,0.0954459032,data/benchmark/100_6200_100.csv +bin/csv-split -l 100 data/benchmark/100_5700_100.csv -n ./tmp/split,0.08197654658099995,0.0009949295960954684,0.0814177692,0.05745170900000002,0.02436276399999999,0.0808896782,0.0883373292,data/benchmark/100_5700_100.csv +bin/csv-split -l 100 data/benchmark/8500_100_100.csv -n ./tmp/split,0.26585198028000034,0.021335422176899356,0.26650624720000005,0.12500000300000022,0.08033505699999995,0.2008807182,0.3553710312,data/benchmark/8500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5800.csv -n ./tmp/split,0.07113555440200003,0.0010363194168380066,0.0704887692,0.04744318099999994,0.02354357499999999,0.0700226982,0.0769059302,data/benchmark/100_100_5800.csv +bin/csv-split -l 100 data/benchmark/100_100_5500.csv -n ./tmp/split,0.06724304433499996,0.0011395468532780953,0.0664476147,0.045018519999999944,0.02207936600000005,0.0661508232,0.0742804142,data/benchmark/100_100_5500.csv +bin/csv-split -l 100 data/benchmark/7600_100_100.csv -n ./tmp/split,0.23686791221099987,0.02061109558037238,0.2402693152,0.11162066299999998,0.0717268059999999,0.17969540320000002,0.33698271820000003,data/benchmark/7600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4700_100.csv -n ./tmp/split,0.06860661784800004,0.0007538330736493099,0.0688231127,0.04746306200000008,0.02099868699999998,0.0675864122,0.0720449362,data/benchmark/100_4700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6100.csv -n ./tmp/split,0.07489939055999999,0.0008428106368796313,0.07440109719999999,0.05012709800000004,0.024628884999999986,0.0739169682,0.0796045942,data/benchmark/100_100_6100.csv +bin/csv-split -l 100 data/benchmark/100_100_8100.csv -n ./tmp/split,0.09889564337699995,0.0016115639046031974,0.09789690770000001,0.06598746200000002,0.03271120199999999,0.0975217712,0.1090493512,data/benchmark/100_100_8100.csv +bin/csv-split -l 100 data/benchmark/9600_100_100.csv -n ./tmp/split,0.3020911885250005,0.023469032465124728,0.3037547342000001,0.14106018000000006,0.09048905800000004,0.22715066120000002,0.42020274720000006,data/benchmark/9600_100_100.csv +bin/csv-split -l 100 data/benchmark/9800_100_100.csv -n ./tmp/split,0.30712338199099976,0.028553499513427408,0.31068985920000003,0.14414154999999987,0.09291214900000008,0.2310861442,0.5272085732,data/benchmark/9800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_700_100.csv -n ./tmp/split,0.011225257341000001,0.0005893688642756188,0.0112521662,0.007731768999999996,0.003454838499999996,0.0104931072,0.0142534452,data/benchmark/100_700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3500.csv -n ./tmp/split,0.04358249296900004,0.0007947930008223888,0.0433854392,0.028835162999999994,0.014637946999999988,0.0427427552,0.05117944020000001,data/benchmark/100_100_3500.csv +bin/csv-split -l 100 data/benchmark/100_5300_100.csv -n ./tmp/split,0.07592889362999994,0.0012719835478071319,0.0752845132,0.05330851199999993,0.022450669999999975,0.0750277152,0.0855908732,data/benchmark/100_5300_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4800.csv -n ./tmp/split,0.05891624001500004,0.0009481363283848897,0.05844044770000001,0.03923308800000002,0.01954923799999999,0.058253769200000007,0.0681653162,data/benchmark/100_100_4800.csv +bin/csv-split -l 100 data/benchmark/100_100_8200.csv -n ./tmp/split,0.10036530130199985,0.00138770169954757,0.09953401170000001,0.06696436300000003,0.03319905799999998,0.0986474272,0.10458203320000001,data/benchmark/100_100_8200.csv +bin/csv-split -l 100 data/benchmark/100_9100_100.csv -n ./tmp/split,0.13121716422400004,0.0014420690725273461,0.1303707772,0.09184458599999991,0.03913293599999998,0.1297055342,0.1360522602,data/benchmark/100_9100_100.csv +bin/csv-split -l 100 data/benchmark/900_100_100.csv -n ./tmp/split,0.02197606530400001,0.002489321877638288,0.0217173277,0.013195960999999985,0.008514952000000001,0.0207859512,0.0763669312,data/benchmark/900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1300.csv -n ./tmp/split,0.017150373857000013,0.0007556646233413318,0.0167879097,0.011392452000000016,0.005704076000000002,0.016398422200000002,0.023356465200000003,data/benchmark/100_100_1300.csv +bin/csv-split -l 100 data/benchmark/100_2000_100.csv -n ./tmp/split,0.029397556859000015,0.0005976878855471132,0.029307223200000003,0.020309080999999986,0.009008384999999992,0.028795966200000002,0.03245652820000001,data/benchmark/100_2000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4600.csv -n ./tmp/split,0.05614837020000012,0.0008549694845950653,0.05567936570000001,0.037418182999999966,0.01860984900000002,0.05550933420000001,0.0644387912,data/benchmark/100_100_4600.csv +bin/csv-split -l 100 data/benchmark/100_100_7900.csv -n ./tmp/split,0.09588364569400017,0.0013513453645131825,0.0951794172,0.06444049100000003,0.03125551,0.0946449872,0.1019676132,data/benchmark/100_100_7900.csv +bin/csv-split -l 100 data/benchmark/100_2300_100.csv -n ./tmp/split,0.033722784586000004,0.0007617776304043352,0.0333828907,0.023509312000000025,0.010117548999999998,0.0331757962,0.04178538920000001,data/benchmark/100_2300_100.csv +bin/csv-split -l 100 data/benchmark/4400_100_100.csv -n ./tmp/split,0.13484259334900003,0.014461672018019567,0.1313054132,0.064968068,0.041592355999999976,0.1044708082,0.21746797720000002,data/benchmark/4400_100_100.csv +bin/csv-split -l 100 data/benchmark/1500_100_100.csv -n ./tmp/split,0.04164506218199996,0.00913485909368606,0.0365751052,0.022156840999999997,0.014253342999999991,0.035406616200000005,0.0877036362,data/benchmark/1500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_500.csv -n ./tmp/split,0.007023537676,0.0005600476946867734,0.0067481732,0.004577750869999999,0.0024266733000000013,0.0065394332,0.0104490522,data/benchmark/100_100_500.csv +bin/csv-split -l 100 data/benchmark/4300_100_100.csv -n ./tmp/split,0.13142296732199998,0.013635664585807387,0.1295038087,0.063321293,0.040790530000000026,0.1016245052,0.2207358352,data/benchmark/4300_100_100.csv +bin/csv-split -l 100 data/benchmark/7800_100_100.csv -n ./tmp/split,0.24433812134500013,0.02387339312071309,0.2476555937,0.11433914699999985,0.07391768999999992,0.18429323920000001,0.49624648220000006,data/benchmark/7800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_800_100.csv -n ./tmp/split,0.012624362401999992,0.0006934154182940179,0.0122630132,0.00844311400000001,0.004128459100000002,0.011902473200000001,0.017566202200000002,data/benchmark/100_800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2900.csv -n ./tmp/split,0.036262098443000025,0.0006709908169954891,0.036304439200000004,0.024031144000000056,0.012136555,0.03552708820000001,0.042982641200000005,data/benchmark/100_100_2900.csv +bin/csv-split -l 100 data/benchmark/7700_100_100.csv -n ./tmp/split,0.24060446498299992,0.022271152132069875,0.24382269620000002,0.11284569799999995,0.07353116900000002,0.1826998152,0.44232122120000006,data/benchmark/7700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5200_100.csv -n ./tmp/split,0.07473576999999998,0.0011079557278096763,0.07409835719999999,0.051042318,0.023540905999999986,0.0736970192,0.0828733762,data/benchmark/100_5200_100.csv +bin/csv-split -l 100 data/benchmark/100_9400_100.csv -n ./tmp/split,0.13496436358000002,0.001284990201295747,0.13431445670000003,0.0941108090000001,0.04061800999999998,0.1334844182,0.1386691222,data/benchmark/100_9400_100.csv +bin/csv-split -l 100 data/benchmark/2100_100_100.csv -n ./tmp/split,0.060213275502,0.014784904291138719,0.05094358970000001,0.030917754000000026,0.019655960999999975,0.049194710200000005,0.1168279792,data/benchmark/2100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2900_100.csv -n ./tmp/split,0.042242705453999996,0.0006172471021161623,0.04200040570000001,0.029457833000000003,0.012686473999999996,0.04161040020000001,0.048168253200000004,data/benchmark/100_2900_100.csv +bin/csv-split -l 100 data/benchmark/100_4100_100.csv -n ./tmp/split,0.059107799190999934,0.0006148152340976936,0.058849519200000006,0.04143650100000003,0.017544650000000002,0.05845729920000001,0.06210066820000001,data/benchmark/100_4100_100.csv +bin/csv-split -l 100 data/benchmark/100_1800_100.csv -n ./tmp/split,0.02672001412300002,0.0008321403723329612,0.0265646187,0.018525912000000005,0.008107124999999996,0.026029133200000002,0.03339206520000001,data/benchmark/100_1800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8800.csv -n ./tmp/split,0.10743314024799987,0.001313743888484065,0.1068754417,0.0720155829999999,0.035202815000000026,0.1062974552,0.1174787822,data/benchmark/100_100_8800.csv +bin/csv-split -l 100 data/benchmark/2600_100_100.csv -n ./tmp/split,0.07722734911300012,0.018283372826801435,0.0631764292,0.03813249599999996,0.024202450000000025,0.0610704102,0.1308770742,data/benchmark/2600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4400.csv -n ./tmp/split,0.054137151700999926,0.0010312568875479723,0.05453733070000001,0.036167831,0.017853529999999992,0.05305916320000001,0.0608945212,data/benchmark/100_100_4400.csv +bin/csv-split -l 100 data/benchmark/100_100_1500.csv -n ./tmp/split,0.019724276305000028,0.0008141369075420714,0.019660359199999998,0.013000173999999996,0.006664122999999995,0.018817133200000002,0.0245983652,data/benchmark/100_100_1500.csv +bin/csv-split -l 100 data/benchmark/100_7600_100.csv -n ./tmp/split,0.10900358157300008,0.0011738636042714235,0.10828899820000001,0.07575731200000003,0.033047884000000076,0.1074039722,0.11780057120000001,data/benchmark/100_7600_100.csv +bin/csv-split -l 100 data/benchmark/8000_100_100.csv -n ./tmp/split,0.24986265381700035,0.02145142821011789,0.25122075070000005,0.11778692599999986,0.07527222,0.1886806172,0.36270992020000004,data/benchmark/8000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7400.csv -n ./tmp/split,0.09046401155599992,0.0011892140496485677,0.08986285620000001,0.06069396899999995,0.029586789000000027,0.08928610320000001,0.0992681562,data/benchmark/100_100_7400.csv +bin/csv-split -l 100 data/benchmark/100_6400_100.csv -n ./tmp/split,0.09200273826800004,0.001118176523669598,0.09148980970000001,0.06384757500000006,0.02796767500000002,0.09074139120000001,0.0962834342,data/benchmark/100_6400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1700.csv -n ./tmp/split,0.022289275346000014,0.0008065323953943088,0.0221690387,0.014790163999999984,0.007426113999999992,0.021213157200000003,0.027043272200000003,data/benchmark/100_100_1700.csv +bin/csv-split -l 100 data/benchmark/100_7700_100.csv -n ./tmp/split,0.11098392620500006,0.0011764081050797339,0.11033747020000001,0.07739755400000006,0.03338364699999999,0.1098706862,0.11620341120000001,data/benchmark/100_7700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1000.csv -n ./tmp/split,0.013540770567000015,0.0007329677264180122,0.013113173200000001,0.008905304999999983,0.004586305000000003,0.0127731892,0.017447497200000002,data/benchmark/100_100_1000.csv +bin/csv-split -l 100 data/benchmark/9500_100_100.csv -n ./tmp/split,0.2984516575480003,0.02283964668352094,0.30329208220000003,0.13982735799999998,0.08955531899999992,0.22412803020000002,0.41992416520000003,data/benchmark/9500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4700.csv -n ./tmp/split,0.05860813368200011,0.0009610652869581021,0.05810805220000001,0.038310105999999955,0.020165601000000033,0.05770973720000001,0.0677335492,data/benchmark/100_100_4700.csv +bin/csv-split -l 100 data/benchmark/6900_100_100.csv -n ./tmp/split,0.21655281582000013,0.01681166628902363,0.2207129122,0.1016444499999998,0.06541939600000009,0.16443863520000002,0.3184832222,data/benchmark/6900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6000.csv -n ./tmp/split,0.07424384192399998,0.0010061451219847647,0.0737183397,0.04910914800000009,0.024982586999999976,0.0734158602,0.0831408372,data/benchmark/100_100_6000.csv +bin/csv-split -l 100 data/benchmark/100_100_2800.csv -n ./tmp/split,0.035340754729999965,0.0005622317552792175,0.0350810037,0.023139357000000017,0.012115892999999987,0.034813242200000004,0.041920642200000004,data/benchmark/100_100_2800.csv +bin/csv-split -l 100 data/benchmark/100_100_9800.csv -n ./tmp/split,0.1206386204740001,0.0013613595899043531,0.11987581620000001,0.08011581699999995,0.04030356499999996,0.1195401572,0.1364317672,data/benchmark/100_100_9800.csv +bin/csv-split -l 100 data/benchmark/100_8200_100.csv -n ./tmp/split,0.118737916059,0.0013309668478397386,0.1180952527,0.08221997699999994,0.036295541000000014,0.11743783020000001,0.1261327752,data/benchmark/100_8200_100.csv +bin/csv-split -l 100 data/benchmark/100_9700_100.csv -n ./tmp/split,0.1410141355070001,0.0013448360520465197,0.1404777182,0.097807768,0.04294266300000003,0.1395515352,0.1483819862,data/benchmark/100_9700_100.csv +bin/csv-split -l 100 data/benchmark/5800_100_100.csv -n ./tmp/split,0.1807254252159998,0.019127645697699844,0.17638833869999998,0.08503644700000007,0.05401816300000003,0.13687979420000002,0.40061776720000003,data/benchmark/5800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6200.csv -n ./tmp/split,0.07630843005900007,0.0011090878313251363,0.0757389027,0.050930035000000026,0.02520647099999997,0.0754631422,0.0849037762,data/benchmark/100_100_6200.csv +bin/csv-split -l 100 data/benchmark/100_5500_100.csv -n ./tmp/split,0.07938408743099996,0.001141139773062014,0.07869900020000001,0.055542771000000046,0.023679178999999998,0.0783958022,0.0864254262,data/benchmark/100_5500_100.csv +bin/csv-split -l 100 data/benchmark/100_3600_100.csv -n ./tmp/split,0.052461025208000014,0.0009271153016218013,0.052381279700000005,0.03661046699999997,0.015725645000000003,0.05154325320000001,0.05863012220000001,data/benchmark/100_3600_100.csv +bin/csv-split -l 100 data/benchmark/1800_100_100.csv -n ./tmp/split,0.050289635087999975,0.013066126180146147,0.04327112570000001,0.02651248399999999,0.016707593999999996,0.042182124200000004,0.0944668572,data/benchmark/1800_100_100.csv +bin/csv-split -l 100 data/benchmark/1700_100_100.csv -n ./tmp/split,0.04810441187900006,0.013942145837969093,0.04050732870000001,0.02492589300000003,0.015703909999999977,0.03972170120000001,0.0992693482,data/benchmark/1700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_700.csv -n ./tmp/split,0.009792314144999995,0.0005939807839164902,0.009944032700000001,0.00650865900000001,0.003248188199999998,0.0089789362,0.0136799382,data/benchmark/100_100_700.csv +bin/csv-split -l 100 data/benchmark/100_4600_100.csv -n ./tmp/split,0.06671342665899999,0.000989385193833825,0.0661299997,0.046412752999999925,0.02015636699999995,0.0659342502,0.0742505762,data/benchmark/100_4600_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9200.csv -n ./tmp/split,0.11216540680099996,0.0013553359321077053,0.1115062677,0.07455614599999999,0.03741234499999999,0.1108630342,0.1163837682,data/benchmark/100_100_9200.csv +bin/csv-split -l 100 data/benchmark/8900_100_100.csv -n ./tmp/split,0.27903798973500016,0.02318163491740463,0.2802355147000001,0.130670769,0.08244740500000004,0.2089676142,0.38305323020000004,data/benchmark/8900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8500_100.csv -n ./tmp/split,0.12232564962000002,0.0013191075755926678,0.1216779922,0.08546726500000007,0.036623070999999986,0.12090664420000001,0.1293205362,data/benchmark/100_8500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8900.csv -n ./tmp/split,0.10891529126700006,0.0014432400541912898,0.1079793372,0.07309681800000012,0.03561200000000002,0.1075112142,0.1156456622,data/benchmark/100_100_8900.csv +bin/csv-split -l 100 data/benchmark/100_1400_100.csv -n ./tmp/split,0.021488605578000045,0.0007301152735668859,0.021345942700000002,0.014703050999999993,0.006715783700000011,0.0207069992,0.0253299222,data/benchmark/100_1400_100.csv +bin/csv-split -l 100 data/benchmark/4800_100_100.csv -n ./tmp/split,0.14711652950700005,0.026916246931867224,0.14920691270000003,0.07085429499999993,0.044632064999999915,0.1128844552,0.23034345220000002,data/benchmark/4800_100_100.csv +bin/csv-split -l 100 data/benchmark/6300_100_100.csv -n ./tmp/split,0.19706306894899991,0.020605472452481257,0.1897879237,0.092385014,0.058674505000000064,0.1476696892,0.3135800852,data/benchmark/6300_100_100.csv +bin/csv-split -l 100 data/benchmark/500_100_100.csv -n ./tmp/split,0.011714564168999997,0.0005668764754640916,0.011403233700000001,0.007254693999999998,0.004406203100000005,0.0111657332,0.0171179552,data/benchmark/500_100_100.csv +bin/csv-split -l 100 data/benchmark/9100_100_100.csv -n ./tmp/split,0.286997572876,0.026684585250215564,0.28526781320000005,0.13356386400000014,0.08412507799999994,0.2131786832,0.5814719722,data/benchmark/9100_100_100.csv +bin/csv-split -l 100 data/benchmark/3100_100_100.csv -n ./tmp/split,0.09229436920600007,0.014959137548855058,0.09425990819999999,0.04573116800000007,0.029263670000000023,0.0729645022,0.1838282012,data/benchmark/3100_100_100.csv +bin/csv-split -l 100 data/benchmark/5700_100_100.csv -n ./tmp/split,0.17820380265399996,0.018948255752624724,0.17373479270000003,0.08354647099999997,0.053052372999999986,0.1337445432,0.35862489620000004,data/benchmark/5700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8600_100.csv -n ./tmp/split,0.12303750147499998,0.0010346486450058302,0.1225571452,0.08617448900000016,0.03663708300000002,0.1216608532,0.1268769952,data/benchmark/100_8600_100.csv +bin/csv-split -l 100 data/benchmark/100_7900_100.csv -n ./tmp/split,0.11317071575100011,0.0013162735108393465,0.1124215182,0.07960446600000007,0.033348322999999944,0.11180554520000001,0.1206536212,data/benchmark/100_7900_100.csv +bin/csv-split -l 100 data/benchmark/9900_100_100.csv -n ./tmp/split,0.31284554019800065,0.026315806314502983,0.3091911117,0.1449323030000001,0.0917858139999999,0.2318648772,0.42369140820000006,data/benchmark/9900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8300_100.csv -n ./tmp/split,0.11918885129100004,0.0013637721297075705,0.1185569612,0.08355981999999998,0.035403665,0.11781391120000001,0.1267594692,data/benchmark/100_8300_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6800.csv -n ./tmp/split,0.08308569956599991,0.0013439829650746292,0.0822015807,0.05557346499999998,0.027340779999999995,0.0817635092,0.0897060032,data/benchmark/100_100_6800.csv +bin/csv-split -l 100 data/benchmark/2200_100_100.csv -n ./tmp/split,0.06468274030399986,0.013857939510977227,0.0549047042,0.032532069999999975,0.020816468000000025,0.051977464200000004,0.1883356132,data/benchmark/2200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_7500_100.csv -n ./tmp/split,0.10785941881399998,0.0013988248759285854,0.1070439842,0.07488301100000004,0.03276723799999999,0.10670727020000001,0.11526619020000001,data/benchmark/100_7500_100.csv +bin/csv-split -l 100 data/benchmark/7500_100_100.csv -n ./tmp/split,0.2350611039940002,0.023767404282825106,0.24218670320000002,0.11050331400000006,0.06930211399999996,0.1761136572,0.36392558520000007,data/benchmark/7500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9300_100.csv -n ./tmp/split,0.1332011399839999,0.0014459332740725727,0.1324049802,0.09324925700000009,0.03968934999999999,0.13204768120000002,0.1406073072,data/benchmark/100_9300_100.csv +bin/csv-split -l 100 data/benchmark/100_300_100.csv -n ./tmp/split,0.004704711481000007,0.00034256860659883775,0.0045976632,0.0031849069600000056,0.0015575668000000014,0.0045374952,0.0074515872,data/benchmark/100_300_100.csv +bin/csv-split -l 100 data/benchmark/100_4200_100.csv -n ./tmp/split,0.060934052809000036,0.000892859589258272,0.06039486720000001,0.04217221799999999,0.0186333,0.06012052620000001,0.0670548562,data/benchmark/100_4200_100.csv +bin/csv-split -l 100 data/benchmark/8400_100_100.csv -n ./tmp/split,0.2638314760960001,0.023836458528511885,0.26394148920000005,0.12314971700000002,0.07782478199999994,0.1969367142,0.48826164220000007,data/benchmark/8400_100_100.csv +bin/csv-split -l 100 data/benchmark/3600_100_100.csv -n ./tmp/split,0.10822624823999998,0.012288507297458914,0.1086369172,0.05320878400000004,0.033662279,0.0847060662,0.1715981152,data/benchmark/3600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9600.csv -n ./tmp/split,0.11692690641099993,0.0016039779813820808,0.1158935687,0.07855308300000001,0.03814427500000007,0.1155504442,0.1265752382,data/benchmark/100_100_9600.csv +bin/csv-split -l 100 data/benchmark/8300_100_100.csv -n ./tmp/split,0.2639127428440004,0.030672556890935985,0.2633473327,0.12228051199999994,0.07695013499999998,0.1945886412,0.42695533520000006,data/benchmark/8300_100_100.csv +bin/csv-split -l 100 data/benchmark/5600_100_100.csv -n ./tmp/split,0.17388527525300015,0.014698264775602267,0.1712385157,0.08217821800000007,0.052008276000000055,0.1317864092,0.2335976442,data/benchmark/5600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_10000_100.csv -n ./tmp/split,0.14428219320699986,0.0015030010978012657,0.14358996870000001,0.09985704200000008,0.04415040100000005,0.1426956262,0.1537679492,data/benchmark/100_10000_100.csv +bin/csv-split -l 100 data/benchmark/100_7400_100.csv -n ./tmp/split,0.10684121976100001,0.0014525351598077604,0.1059752402,0.07474791800000007,0.031873977000000005,0.1056677152,0.1160507122,data/benchmark/100_7400_100.csv +bin/csv-split -l 100 data/benchmark/4200_100_100.csv -n ./tmp/split,0.12936047473800016,0.017635660700748734,0.12797297270000002,0.06201890200000006,0.03943537900000003,0.09904466220000001,0.2696401332,data/benchmark/4200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5600.csv -n ./tmp/split,0.06936783677300003,0.0009561249316033687,0.06897885270000001,0.04588234700000005,0.02333380599999998,0.0682084722,0.0747258532,data/benchmark/100_100_5600.csv +bin/csv-split -l 100 data/benchmark/100_6700_100.csv -n ./tmp/split,0.09757942812,0.0014918556932251707,0.0968010077,0.06760735600000004,0.02976351599999996,0.0961789302,0.1068617812,data/benchmark/100_6700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4000.csv -n ./tmp/split,0.05020474684000004,0.0006609748732567748,0.050305960200000006,0.03314306399999999,0.016943255000000008,0.049346788200000005,0.05385711320000001,data/benchmark/100_100_4000.csv +bin/csv-split -l 100 data/benchmark/100_1000_100.csv -n ./tmp/split,0.015158384964000004,0.00044960532738318556,0.0150307097,0.010337204000000006,0.004774890400000003,0.014876390199999999,0.0200713132,data/benchmark/100_1000_100.csv +bin/csv-split -l 100 data/benchmark/8700_100_100.csv -n ./tmp/split,0.2750427640379999,0.026931044556343656,0.2726666647,0.12804426099999994,0.08179537899999986,0.2056222872,0.45732361520000003,data/benchmark/8700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9500.csv -n ./tmp/split,0.11674267158099996,0.0015383578382204511,0.1159179457,0.07675114799999994,0.039774446000000005,0.1155575622,0.12545718520000002,data/benchmark/100_100_9500.csv +bin/csv-split -l 100 data/benchmark/4700_100_100.csv -n ./tmp/split,0.14440769163500014,0.015280284407644026,0.1431630817,0.06921728299999992,0.04423127599999997,0.1113243142,0.22312475920000002,data/benchmark/4700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1800.csv -n ./tmp/split,0.023377563361999986,0.0007840949063796537,0.023075960200000002,0.015308604999999972,0.008001935000000002,0.0225287272,0.026999208200000003,data/benchmark/100_100_1800.csv +bin/csv-split -l 100 data/benchmark/100_1600_100.csv -n ./tmp/split,0.024231948907000016,0.0007737846778361409,0.0239488937,0.016524425000000002,0.007638529000000004,0.0234213992,0.030528573200000002,data/benchmark/100_1600_100.csv +bin/csv-split -l 100 data/benchmark/9300_100_100.csv -n ./tmp/split,0.2942724832880006,0.025129132041963785,0.29579295820000007,0.1367240460000001,0.08743718300000007,0.2198031892,0.40249062020000004,data/benchmark/9300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3300.csv -n ./tmp/split,0.041444199527,0.0008299103409411436,0.0410988357,0.027232441999999975,0.014113867999999998,0.0407132482,0.04952456920000001,data/benchmark/100_100_3300.csv +bin/csv-split -l 100 data/benchmark/100_100_3000.csv -n ./tmp/split,0.037221143171999975,0.0007227936123151996,0.036839176700000004,0.02476503699999999,0.012355868000000006,0.036599006200000006,0.04196914720000001,data/benchmark/100_100_3000.csv +bin/csv-split -l 100 data/benchmark/100_2700_100.csv -n ./tmp/split,0.039391424556999996,0.0004924388242401976,0.039486601700000006,0.02728798899999996,0.012009987999999996,0.03876594120000001,0.04506744420000001,data/benchmark/100_2700_100.csv +bin/csv-split -l 100 data/benchmark/6200_100_100.csv -n ./tmp/split,0.19372350156400023,0.01778540640660544,0.1972175492,0.09145761299999985,0.0577773019999999,0.1463401232,0.27825553020000005,data/benchmark/6200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_600.csv -n ./tmp/split,0.008207220888999986,0.0004893364073611214,0.0080330867,0.005435482999999997,0.002742786700000002,0.0078840902,0.0120747512,data/benchmark/100_100_600.csv +bin/csv-split -l 100 data/benchmark/8600_100_100.csv -n ./tmp/split,0.2730396363029997,0.028837983529239122,0.2705396017,0.12662434700000014,0.07969673700000005,0.20197666520000002,0.5502264632,data/benchmark/8600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9900_100.csv -n ./tmp/split,0.14239405003700004,0.0015567035429984877,0.1416637287,0.09944436600000005,0.042677834999999935,0.1407445842,0.15253838120000002,data/benchmark/100_9900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3600.csv -n ./tmp/split,0.04480602509099995,0.0007423016026017698,0.0444675967,0.029744651000000018,0.014955834999999995,0.0441708062,0.05124601520000001,data/benchmark/100_100_3600.csv +bin/csv-split -l 100 data/benchmark/6700_100_100.csv -n ./tmp/split,0.2115237740729997,0.020773765940280912,0.2138820407,0.0982941049999998,0.06267989599999998,0.1578883762,0.3322156512,data/benchmark/6700_100_100.csv +bin/csv-split -l 100 data/benchmark/4100_100_100.csv -n ./tmp/split,0.12604818366000006,0.017827148299655586,0.12595098370000002,0.059920435000000036,0.038662681999999976,0.0964499352,0.2358811882,data/benchmark/4100_100_100.csv +bin/csv-split -l 100 data/benchmark/700_100_100.csv -n ./tmp/split,0.016785979624999985,0.0008813964047242846,0.0167220352,0.010191854999999994,0.006489831000000001,0.0160259162,0.03295969520000001,data/benchmark/700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9000.csv -n ./tmp/split,0.11030359261599992,0.0013918409992361826,0.1094899312,0.07340006999999987,0.036686432000000005,0.10873986520000001,0.11474290720000001,data/benchmark/100_100_9000.csv +bin/csv-split -l 100 data/benchmark/100_100_900.csv -n ./tmp/split,0.012444631431999992,0.0006812824085659544,0.012124489200000001,0.008106480999999994,0.0042897747999999965,0.0117456272,0.017363443200000002,data/benchmark/100_100_900.csv +bin/csv-split -l 100 data/benchmark/100_100_5200.csv -n ./tmp/split,0.064519136094,0.001229964101316091,0.0646573202,0.04299532400000004,0.02136281499999999,0.0632323742,0.0734426832,data/benchmark/100_100_5200.csv +bin/csv-split -l 100 data/benchmark/100_100_9400.csv -n ./tmp/split,0.11496467912500011,0.00185065102102959,0.1149591827,0.07682664700000003,0.037905246999999934,0.1126293232,0.1245422092,data/benchmark/100_100_9400.csv +bin/csv-split -l 100 data/benchmark/100_100_2300.csv -n ./tmp/split,0.029115339165999992,0.0006988710356605095,0.029144870700000002,0.019216376999999982,0.009810435,0.0283881172,0.035662348200000006,data/benchmark/100_100_2300.csv +bin/csv-split -l 100 data/benchmark/5200_100_100.csv -n ./tmp/split,0.1615955156439999,0.016118893174332218,0.15992647670000001,0.07627660200000001,0.047820069999999985,0.1221998472,0.2897479592,data/benchmark/5200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1200_100.csv -n ./tmp/split,0.018063055103000027,0.0006490937926284602,0.0179214122,0.012366458000000006,0.005646431699999995,0.017594710200000002,0.0239304252,data/benchmark/100_1200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5000.csv -n ./tmp/split,0.06117799943399988,0.0008150537798701066,0.06072971820000001,0.041049425999999986,0.019994647000000004,0.060572011200000005,0.0674693962,data/benchmark/100_100_5000.csv +bin/csv-split -l 100 data/benchmark/200_100_100.csv -n ./tmp/split,0.004207799008999998,0.00035862231722912275,0.0040698277,0.002610338045000003,0.0016129266999999965,0.003987220200000001,0.006752612200000001,data/benchmark/200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5900.csv -n ./tmp/split,0.07178609766100004,0.0010926169036477315,0.0712822682,0.04799093900000001,0.02364233599999997,0.0708445632,0.0803413162,data/benchmark/100_100_5900.csv +bin/csv-split -l 100 data/benchmark/100_100_6700.csv -n ./tmp/split,0.08166651332599997,0.0011726836264763219,0.0810054102,0.0546671599999999,0.026828694000000004,0.0804830732,0.0866847742,data/benchmark/100_100_6700.csv +bin/csv-split -l 100 data/benchmark/100_8400_100.csv -n ./tmp/split,0.12024790750399986,0.0015566663619720337,0.1193130922,0.08360770300000017,0.03640268800000003,0.1189885752,0.1296951622,data/benchmark/100_8400_100.csv +bin/csv-split -l 100 data/benchmark/100_9500_100.csv -n ./tmp/split,0.13621055985000002,0.0013668123696648669,0.1355320462,0.09549319999999992,0.040465842999999974,0.1348844952,0.1448939242,data/benchmark/100_9500_100.csv +bin/csv-split -l 100 data/benchmark/4600_100_100.csv -n ./tmp/split,0.14151143864000015,0.015148244332915981,0.1380213452,0.067695912,0.04335648800000003,0.1087256692,0.22179862220000002,data/benchmark/4600_100_100.csv +bin/csv-split -l 100 data/benchmark/8100_100_100.csv -n ./tmp/split,0.2564172131389998,0.024731431111995956,0.25491165120000003,0.1195095360000001,0.07674414499999996,0.1918899162,0.3951195552,data/benchmark/8100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1600.csv -n ./tmp/split,0.020860668164999995,0.0007594869838575717,0.020512808700000003,0.013657176000000035,0.0071394469999999976,0.0201183602,0.027274902200000003,data/benchmark/100_100_1600.csv +bin/csv-split -l 100 data/benchmark/100_3000_100.csv -n ./tmp/split,0.04367347427999999,0.0010408330929394867,0.043130104700000005,0.030522457999999992,0.013031024000000006,0.042929117200000005,0.05259698420000001,data/benchmark/100_3000_100.csv +bin/csv-split -l 100 data/benchmark/300_100_100.csv -n ./tmp/split,0.006850433934999996,0.0004797616529763957,0.0067067697,0.004280603000000008,0.002546042199999998,0.0063643212,0.0094136562,data/benchmark/300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9700.csv -n ./tmp/split,0.11929856932299993,0.0013334420204812623,0.1184651977,0.07932427599999997,0.03975126199999993,0.1176463022,0.12242576420000001,data/benchmark/100_100_9700.csv +bin/csv-split -l 100 data/benchmark/100_100_2500.csv -n ./tmp/split,0.03154566575499996,0.0007262485433671964,0.03126256470000001,0.020941539999999967,0.010510262999999997,0.030908240200000003,0.0358213922,data/benchmark/100_100_2500.csv +bin/csv-split -l 100 data/benchmark/4000_100_100.csv -n ./tmp/split,0.12289423550199982,0.01511607047269697,0.1200165987,0.05887648200000002,0.037801735999999996,0.0951349752,0.27038140620000006,data/benchmark/4000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1700_100.csv -n ./tmp/split,0.025559918124999942,0.0006795486107969506,0.025455379700000003,0.01764306800000002,0.007840668,0.0248462892,0.031213409200000004,data/benchmark/100_1700_100.csv +bin/csv-split -l 100 data/benchmark/6500_100_100.csv -n ./tmp/split,0.2046432307940002,0.01795822449972305,0.2020279627,0.09551220100000009,0.061632565000000014,0.1537566812,0.32011968120000006,data/benchmark/6500_100_100.csv +bin/csv-split -l 100 data/benchmark/1200_100_100.csv -n ./tmp/split,0.032632268133,0.010195874847386703,0.028572920700000004,0.017523650999999998,0.011249598999999994,0.0279538632,0.1080155722,data/benchmark/1200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3800.csv -n ./tmp/split,0.04733355406700002,0.0009098929070526655,0.046904235200000005,0.03133014300000002,0.01589229600000003,0.04646168020000001,0.05338375420000001,data/benchmark/100_100_3800.csv +bin/csv-split -l 100 data/benchmark/3700_100_100.csv -n ./tmp/split,0.11648556142299998,0.012589428477495317,0.1115793607,0.05435448099999996,0.035044349999999974,0.0882835922,0.19237408820000002,data/benchmark/3700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3700.csv -n ./tmp/split,0.04612280175800006,0.0007440562355860217,0.0457986207,0.030527682999999996,0.015491791999999997,0.045400662200000004,0.05296447420000001,data/benchmark/100_100_3700.csv +bin/csv-split -l 100 data/benchmark/100_100_7000.csv -n ./tmp/split,0.08592015210899993,0.0010952197468453034,0.0852908507,0.05709179299999997,0.02865332000000003,0.0846389712,0.0904486752,data/benchmark/100_100_7000.csv +bin/csv-split -l 100 data/benchmark/100_4000_100.csv -n ./tmp/split,0.05834842989000009,0.0007378250361729817,0.058031375200000006,0.04015248200000005,0.01806302599999998,0.05760712920000001,0.0664657772,data/benchmark/100_4000_100.csv +bin/csv-split -l 100 data/benchmark/100_1100_100.csv -n ./tmp/split,0.016956233708,0.0007558693677974571,0.0166032422,0.011666879000000012,0.005235471000000005,0.0162641032,0.021974839200000002,data/benchmark/100_1100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6500.csv -n ./tmp/split,0.08012866925700005,0.0010546534776940226,0.0794866937,0.05312043500000001,0.02685205000000001,0.0792124712,0.0878289632,data/benchmark/100_100_6500.csv +bin/csv-split -l 100 data/benchmark/100_8100_100.csv -n ./tmp/split,0.11715807192199991,0.0013355635226948797,0.1166471237,0.08138103699999988,0.03554586799999999,0.1157041442,0.1268572272,data/benchmark/100_8100_100.csv +bin/csv-split -l 100 data/benchmark/3000_100_100.csv -n ./tmp/split,0.09060375710500004,0.014043566195317245,0.09213161219999999,0.04453345799999996,0.028209717000000026,0.0707773982,0.1673067882,data/benchmark/3000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5300.csv -n ./tmp/split,0.06525930881800002,0.000779406116712097,0.0649550292,0.0433682709999999,0.021757676000000024,0.0643955742,0.0697809692,data/benchmark/100_100_5300.csv +bin/csv-split -l 100 data/benchmark/1400_100_100.csv -n ./tmp/split,0.037667284556999955,0.008540778313343607,0.0335783392,0.020596957000000037,0.01312023999999998,0.03284806020000001,0.0827250972,data/benchmark/1400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5700.csv -n ./tmp/split,0.069530229721,0.0011055804280235906,0.0688951112,0.04651501499999996,0.02286782700000002,0.0685241922,0.0747013612,data/benchmark/100_100_5700.csv +bin/csv-split -l 100 data/benchmark/100_4300_100.csv -n ./tmp/split,0.062364867448000086,0.0008293550737445527,0.0619448297,0.043372983000000025,0.01886096399999998,0.061530496200000014,0.0680216002,data/benchmark/100_4300_100.csv +bin/csv-split -l 100 data/benchmark/100_8900_100.csv -n ./tmp/split,0.12825836241799995,0.001247822947191139,0.1275846612,0.08944963399999997,0.038580486000000025,0.1268533522,0.1334766342,data/benchmark/100_8900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3100.csv -n ./tmp/split,0.03862902768200005,0.0005764859162553569,0.038843843200000006,0.025493210999999974,0.013048331000000005,0.037903192200000005,0.040664440200000006,data/benchmark/100_100_3100.csv +bin/csv-split -l 100 data/benchmark/100_100_8700.csv -n ./tmp/split,0.10631054574700008,0.0012732215535096153,0.1056425277,0.07110984500000006,0.03499339400000002,0.10500760020000001,0.11363103520000001,data/benchmark/100_100_8700.csv +bin/csv-split -l 100 data/benchmark/100_4800_100.csv -n ./tmp/split,0.06929831529999995,0.0007819096394221077,0.0688813992,0.04829081200000007,0.020859479000000018,0.0685268192,0.0734171302,data/benchmark/100_4800_100.csv +bin/csv-split -l 100 data/benchmark/5500_100_100.csv -n ./tmp/split,0.17264797816099994,0.017702023819798924,0.17129661870000001,0.08118119800000001,0.0519382800000001,0.1299435962,0.27939363520000005,data/benchmark/5500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_7800_100.csv -n ./tmp/split,0.11239964612399983,0.0011797833066542764,0.1116864712,0.07815495599999994,0.034036525000000005,0.1112580382,0.1193160202,data/benchmark/100_7800_100.csv +bin/csv-split -l 100 data/benchmark/6400_100_100.csv -n ./tmp/split,0.20222694476699973,0.019100304396143332,0.1975565642,0.09411363899999996,0.060811336000000014,0.1512992722,0.33867807020000007,data/benchmark/6400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6900_100.csv -n ./tmp/split,0.09992437955100003,0.0011918022276336529,0.0993452367,0.06945303100000005,0.030268822999999993,0.09866916220000001,0.1061860012,data/benchmark/100_6900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9300.csv -n ./tmp/split,0.11414531287199987,0.0014776701850242001,0.1133236937,0.07578688099999999,0.038140977999999964,0.1125195432,0.1211591962,data/benchmark/100_100_9300.csv +bin/csv-split -l 100 data/benchmark/100_100_1200.csv -n ./tmp/split,0.016175912132000005,0.0007746239496374428,0.0157487477,0.010604893999999998,0.005518789999999994,0.015424287200000001,0.021944854200000002,data/benchmark/100_100_1200.csv +bin/csv-split -l 100 data/benchmark/7900_100_100.csv -n ./tmp/split,0.2519569573210001,0.027435936367518184,0.25051239320000007,0.11640252599999996,0.07448151200000001,0.18720221720000002,0.4324027442000001,data/benchmark/7900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6500_100.csv -n ./tmp/split,0.0934065836099999,0.0009929722012816575,0.0929773777,0.06525023200000007,0.027971955999999996,0.0923744412,0.0987832362,data/benchmark/100_6500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6400.csv -n ./tmp/split,0.07843365096699992,0.0010025162997227173,0.07800745519999999,0.05260101199999994,0.025674136000000004,0.0774847412,0.08753362320000001,data/benchmark/100_100_6400.csv +bin/csv-split -l 100 data/benchmark/5000_100_100.csv -n ./tmp/split,0.1549852251760002,0.016286678385700994,0.1534749272,0.0735210159999999,0.046308489000000015,0.1178262912,0.2368879842,data/benchmark/5000_100_100.csv +bin/csv-split -l 100 data/benchmark/4900_100_100.csv -n ./tmp/split,0.15453647982299998,0.01761264314774335,0.15125146420000002,0.0720928640000001,0.045424710999999944,0.1152301782,0.3259712732,data/benchmark/4900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_3900_100.csv -n ./tmp/split,0.056792973645,0.0009748573566078763,0.05700393220000001,0.039700176999999975,0.016962437999999986,0.055836212200000006,0.0657676742,data/benchmark/100_3900_100.csv +bin/csv-split -l 100 data/benchmark/2800_100_100.csv -n ./tmp/split,0.08425943698100004,0.016883617338108902,0.0888166682,0.041149808999999996,0.026108872000000026,0.0659689242,0.1483507682,data/benchmark/2800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_900_100.csv -n ./tmp/split,0.013941524143000015,0.0005686178245267568,0.0136578597,0.009679097999999994,0.004220507599999996,0.0133216062,0.0172323742,data/benchmark/100_900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6600.csv -n ./tmp/split,0.0801486069390002,0.0011656318627163598,0.0794211272,0.053736632000000055,0.026251035999999995,0.0788888842,0.0869443862,data/benchmark/100_100_6600.csv +bin/csv-split -l 100 data/benchmark/3500_100_100.csv -n ./tmp/split,0.10795017201799995,0.01694728986783356,0.1136317097,0.05128132900000008,0.032832453999999976,0.0826669792,0.1785604802,data/benchmark/3500_100_100.csv +bin/csv-split -l 100 data/benchmark/400_100_100.csv -n ./tmp/split,0.009998111859999994,0.003417490251042996,0.0095701292,0.005861484000000005,0.0036163265000000023,0.008781456200000001,0.05502037120000001,data/benchmark/400_100_100.csv +bin/csv-split -l 100 data/benchmark/9000_100_100.csv -n ./tmp/split,0.2901449831279998,0.03243512946375374,0.28759477270000006,0.132845338,0.08438014900000003,0.2117848712,0.5506836602,data/benchmark/9000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6900.csv -n ./tmp/split,0.08412993009800002,0.001311046581055567,0.0833947877,0.05618574900000001,0.027772126000000015,0.0827622712,0.0922101442,data/benchmark/100_100_6900.csv +bin/csv-split -l 100 data/benchmark/100_100_1400.csv -n ./tmp/split,0.018510828952000007,0.0007560141270449238,0.0182197267,0.012185326999999963,0.006269034700000005,0.0176546962,0.0238448302,data/benchmark/100_100_1400.csv +bin/csv-split -l 100 data/benchmark/2400_100_100.csv -n ./tmp/split,0.07241947231900003,0.017276877481506487,0.0769209377,0.035265427999999974,0.022734023999999985,0.05637032620000001,0.23044496120000002,data/benchmark/2400_100_100.csv +bin/csv-split -l 100 data/benchmark/6800_100_100.csv -n ./tmp/split,0.2193715074280001,0.032457088136369425,0.21487915820000003,0.099929382,0.06354707399999994,0.1600699512,0.48729153320000007,data/benchmark/6800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4900_100.csv -n ./tmp/split,0.07109979222099999,0.000951599713941748,0.0706180537,0.04954750499999997,0.02140088399999998,0.0700935082,0.0775781682,data/benchmark/100_4900_100.csv +bin/csv-split -l 100 data/benchmark/1100_100_100.csv -n ./tmp/split,0.02791996783499998,0.003570025018969353,0.0272703632,0.016421848,0.010296463000000007,0.025535254200000003,0.0633112312,data/benchmark/1100_100_100.csv +bin/csv-split -l 100 data/benchmark/1900_100_100.csv -n ./tmp/split,0.056794042673000034,0.018286961399240808,0.04567547920000001,0.027713021999999983,0.017769986999999998,0.0445346542,0.14328625520000002,data/benchmark/1900_100_100.csv +bin/csv-split -l 100 data/benchmark/2500_100_100.csv -n ./tmp/split,0.07543155458299995,0.021233868958779614,0.060758770200000006,0.03654308599999996,0.02347173999999998,0.058763425200000004,0.2195086312,data/benchmark/2500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9200_100.csv -n ./tmp/split,0.132309863864,0.0015812345036822855,0.1317644732,0.09220424699999988,0.03985646899999997,0.1304924972,0.1381234722,data/benchmark/100_9200_100.csv +bin/csv-split -l 100 data/benchmark/100_9800_100.csv -n ./tmp/split,0.140395218695,0.0013153079646823472,0.13970237470000002,0.09832874800000001,0.04181426400000004,0.1391077082,0.1460846032,data/benchmark/100_9800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3200.csv -n ./tmp/split,0.03955641528900001,0.0006616008825179678,0.03918126370000001,0.02636418800000001,0.013096879000000014,0.0389950042,0.045575767200000006,data/benchmark/100_100_3200.csv +bin/csv-split -l 100 data/benchmark/100_400_100.csv -n ./tmp/split,0.006438608357000003,0.0005540986721265399,0.0062141607000000005,0.004408565000000007,0.0020346835999999996,0.0059896381999999995,0.0096288962,data/benchmark/100_400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2600.csv -n ./tmp/split,0.03251340294300006,0.0008395540503374027,0.0325308762,0.021796176999999976,0.010624750999999974,0.031816055200000005,0.040990704200000005,data/benchmark/100_100_2600.csv +bin/csv-split -l 100 data/benchmark/100_6000_100.csv -n ./tmp/split,0.086064201504,0.000984223994017818,0.08558489920000001,0.05966772500000004,0.026224883000000025,0.0852503762,0.0927345742,data/benchmark/100_6000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2200.csv -n ./tmp/split,0.027752477384000024,0.0008177244129018508,0.0276164442,0.018478759000000004,0.009193429999999995,0.0270708832,0.035429619200000005,data/benchmark/100_100_2200.csv +bin/csv-split -l 100 data/benchmark/100_2100_100.csv -n ./tmp/split,0.030987548181999988,0.0009875955826750096,0.030486467700000002,0.021499030000000006,0.009392300999999994,0.0303868772,0.03942131420000001,data/benchmark/100_2100_100.csv +bin/csv-split -l 100 data/benchmark/8800_100_100.csv -n ./tmp/split,0.285616913173,0.03438855280363721,0.28407747820000007,0.12980110500000006,0.08336419099999988,0.20713538920000002,0.6377714972,data/benchmark/8800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6100_100.csv -n ./tmp/split,0.08816487602799994,0.0012017661725096476,0.0874589652,0.06158129700000003,0.026406362999999988,0.08712334320000001,0.0977143692,data/benchmark/100_6100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7300.csv -n ./tmp/split,0.08967004023600005,0.0014282927212840304,0.0887886852,0.060003194000000024,0.02948084800000001,0.0884091592,0.0990407142,data/benchmark/100_100_7300.csv +bin/csv-split -l 100 data/benchmark/2700_100_100.csv -n ./tmp/split,0.08215477820300003,0.013840587646489202,0.0842800222,0.03971219300000001,0.025811959,0.0641171712,0.1984462102,data/benchmark/2700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4400_100.csv -n ./tmp/split,0.06420803047200005,0.0008649008378088655,0.0637712242,0.044188582000000004,0.019880967000000017,0.0635412542,0.0731036162,data/benchmark/100_4400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8300.csv -n ./tmp/split,0.1028409825149999,0.0011899413734591242,0.1022592502,0.06813175900000003,0.03451919799999999,0.1016092022,0.1079379532,data/benchmark/100_100_8300.csv +bin/csv-split -l 100 data/benchmark/6000_100_100.csv -n ./tmp/split,0.19762826085300012,0.024832327837356356,0.1903042572,0.088303561,0.05685600199999991,0.1419801352,0.41527156120000003,data/benchmark/6000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6300_100.csv -n ./tmp/split,0.09177104456399994,0.0011006426208014614,0.09121639370000001,0.06351565799999996,0.028059377,0.09076343020000001,0.0989997902,data/benchmark/100_6300_100.csv +bin/csv-split -l 100 data/benchmark/100_1300_100.csv -n ./tmp/split,0.02010740070000002,0.0007605865273557117,0.0198319342,0.013778450999999997,0.006268363000000001,0.0193092962,0.0248631662,data/benchmark/100_1300_100.csv +bin/csv-split -l 100 data/benchmark/8200_100_100.csv -n ./tmp/split,0.27586169679699996,0.03782731402174413,0.27345326020000005,0.1208782489999999,0.077836313,0.1947096502,0.5518042692,data/benchmark/8200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1900.csv -n ./tmp/split,0.024946891465000013,0.0006936754381506672,0.0247815132,0.016289211,0.008585313000000006,0.0240360142,0.028826687200000003,data/benchmark/100_100_1900.csv diff --git a/benchmark/v0.0.2-1.md b/benchmark/v0.0.2-1.md new file mode 100644 index 0000000..07c9ce0 --- /dev/null +++ b/benchmark/v0.0.2-1.md @@ -0,0 +1,14 @@ +This benchmark uses + +```python +row_min, row_max, row_step = 100, 10001, 100 +col_min, col_max, col_step = 100, 10001, 100 +chr_min, chr_max, chr_step = 100, 10001, 100 +``` + +and a split length of `1000`. Further, hyperfine was set to use 100 warmup and at least 1000 actual runs. + +Here are the results: +![Benchmark results](v0.0.2-1.png) + +You can see that there are clear linear correlations between the running time and the numbers of lines, columns and characters. You can also see though, that there are some significant statistical outliers, which are mostly present for specific numbers of lines. \ No newline at end of file diff --git a/benchmark/v0.0.2-1.png b/benchmark/v0.0.2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd3ae2ccf64e6b4dbbc032fddfb808639af3dc5 GIT binary patch literal 73242 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 Y=uVxji4obkg}_VYn7U%}-v+n-18fBF`Tzg` literal 0 HcmV?d00001 diff --git a/scripts/benchmark_miltfra.sh b/scripts/benchmark_miltfra.sh new file mode 100755 index 0000000..cebe047 --- /dev/null +++ b/scripts/benchmark_miltfra.sh @@ -0,0 +1,22 @@ +#!/bin/sh +DIR=$1 +BIN=$2 +NUM_LINES=$3 +OUT_LOG=$4 +if [ -z "$4" ]; then + printf "Expected 4 arguments: benchmark_miltfra.sh \n" + exit 1 +fi +dout="./tmp" +rm -rf $dout +files=$(find $1 -type f | paste -sd ',') +hyperfine \ + "$BIN -l $NUM_LINES {file} -n $dout/split" \ + --export-csv $OUT_LOG \ + -m 1000 \ + -i \ + --warmup 100 \ + -L file $files \ + --prepare "mkdir -p $dout" \ + --cleanup "rm -rf $dout" \ + --show-output \ No newline at end of file diff --git a/scripts/visualise_benchmark.py b/scripts/visualise_benchmark.py new file mode 100755 index 0000000..0245884 --- /dev/null +++ b/scripts/visualise_benchmark.py @@ -0,0 +1,65 @@ +#!/usr/bin/python +import pandas as pd +from matplotlib import pyplot as plt +import sys +import math + + +def get_params(parameter_file): + f = parameter_file[:-len('.csv')] + f = f[len('data/benchmark/'):] + return [int(x) for x in f.split('_')] + + +def plot_map(axs, f, x, y, label): + axs.plot(list(map(f, x)), list(map(f, y)), label=label) + + +if len(sys.argv) != 2: + print("Expected exactly one argument: ") + sys.exit(1) + +file_name = sys.argv[1] +raw_benchmark_data = pd.read_csv(file_name) + +times = dict() +entries_by_lines = dict() +entries_by_cols = dict() +entries_by_chars = dict() + +for i in range(len(raw_benchmark_data.index)): + row = raw_benchmark_data.iloc[i] + lines, cols, chars = get_params(row['parameter_file']) + entries_by_lines[lines] = entries_by_lines.get(lines, []) + [i] + entries_by_cols[cols] = entries_by_cols.get(cols, []) + [i] + entries_by_chars[chars] = entries_by_chars.get(chars, []) + [i] + times[(lines, cols, chars)] = float(row['mean']) + +default_lines = min(entries_by_lines.keys()) +default_cols = min(entries_by_cols.keys()) +default_chars = min(entries_by_chars.keys()) + +lines = sorted(entries_by_lines.keys()) +times_by_lines = [times[(l, default_cols, default_chars)] for l in lines] + +cols = sorted(entries_by_cols.keys()) +times_by_cols = [times[(default_lines, c, default_chars)] for c in cols] + +chars = sorted(entries_by_chars.keys()) +times_by_chars = [times[(default_lines, default_cols, c)] for c in chars] + +f = lambda x: x # id(x) = x + +fig, axs = plt.subplots() + +fig.set_dpi(150) + +plot_map(axs, f, lines, times_by_lines, "N = Number of lines per file") +plot_map(axs, f, cols, times_by_cols, "N = Number of columns per line") +plot_map(axs, f, chars, times_by_chars, "N = Number of characters per cell") + +plt.xlabel("Problem size N") +plt.ylabel("Time taken in seconds") + +plt.legend() +plt.savefig(f"{'.'.join(file_name.split('.')[:-1])}.png") \ No newline at end of file From 7ef47f8341e43388f793060e5a54c3154d6d121a Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 13:00:03 +0000 Subject: [PATCH 10/14] Added scripts to benchmark imartingraham/csv-split --- Makefile | 5 ++++- scripts/benchmark_imartingraham.sh | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100755 scripts/benchmark_imartingraham.sh diff --git a/Makefile b/Makefile index 38e3c0e..d5d7ddd 100644 --- a/Makefile +++ b/Makefile @@ -146,4 +146,7 @@ $(DATA_DIR)/benchmark: $(TEST_BUILD_DIR)/%.o: - $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) \ No newline at end of file + $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) + +$(BIN_DIR)/imartingraham: + git clone https://github.com/imartingraham/csv-split $(BIN_DIR)/imartingraham \ No newline at end of file diff --git a/scripts/benchmark_imartingraham.sh b/scripts/benchmark_imartingraham.sh new file mode 100755 index 0000000..0ef43a4 --- /dev/null +++ b/scripts/benchmark_imartingraham.sh @@ -0,0 +1,23 @@ +#!/bin/sh +DIR=$1 +NUM_LINES=$2 +OUT_LOG=$3 +if [ -z "$3" ]; then + printf "Expected 3 arguments: benchmark_miltfra.sh \n" + exit 1 +fi +dout="./temp" +rm -rf $dout +files=$(find $DIR -type f | paste -sd ',') +make bin/imartingraham +BIN="ruby bin/imartingraham/csv-split.rb" +hyperfine \ + "$BIN -l $NUM_LINES -f {file} -n $dout/split" \ + --export-csv $OUT_LOG \ + -m 3 \ + -i \ + --warmup 3 \ + -L file $files \ + --prepare "mkdir -p $dout" \ + --cleanup "rm -rf $dout" \ + --show-output From 7fe1a83f9b6e823678d3bb6e37d5d13004b2ec23 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 13:30:10 +0000 Subject: [PATCH 11/14] Fixed help messages in scripts --- scripts/benchmark_imartingraham.sh | 2 +- scripts/benchmark_miltfra.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/benchmark_imartingraham.sh b/scripts/benchmark_imartingraham.sh index 0ef43a4..18888e9 100755 --- a/scripts/benchmark_imartingraham.sh +++ b/scripts/benchmark_imartingraham.sh @@ -3,7 +3,7 @@ DIR=$1 NUM_LINES=$2 OUT_LOG=$3 if [ -z "$3" ]; then - printf "Expected 3 arguments: benchmark_miltfra.sh \n" + printf "Expected 3 arguments: \n" exit 1 fi dout="./temp" diff --git a/scripts/benchmark_miltfra.sh b/scripts/benchmark_miltfra.sh index cebe047..d07c18a 100755 --- a/scripts/benchmark_miltfra.sh +++ b/scripts/benchmark_miltfra.sh @@ -4,7 +4,7 @@ BIN=$2 NUM_LINES=$3 OUT_LOG=$4 if [ -z "$4" ]; then - printf "Expected 4 arguments: benchmark_miltfra.sh \n" + printf "Expected 4 arguments: \n" exit 1 fi dout="./tmp" From a083a21b0ab6de06de37ef7225740e04dbdb3c57 Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 13:35:26 +0000 Subject: [PATCH 12/14] Added xsv benchmark and renamed tmp to temp for consistency --- benchmark/v0.0.2-1.csv | 596 +++++++++++++++++------------------ scripts/benchmark_miltfra.sh | 2 +- scripts/benchmark_xsv.sh | 22 ++ src/flags.c | 10 +- 4 files changed, 326 insertions(+), 304 deletions(-) create mode 100755 scripts/benchmark_xsv.sh diff --git a/benchmark/v0.0.2-1.csv b/benchmark/v0.0.2-1.csv index 6e53c6d..0dd4b9d 100644 --- a/benchmark/v0.0.2-1.csv +++ b/benchmark/v0.0.2-1.csv @@ -1,299 +1,299 @@ command,mean,stddev,median,user,system,min,max,parameter_file -bin/csv-split -l 100 data/benchmark/2300_100_100.csv -n ./tmp/split,0.15673962488699994,0.06563031467361495,0.1592951522,0.03475758999999998,0.022442259000000044,0.054609321200000005,0.6946567692,data/benchmark/2300_100_100.csv -bin/csv-split -l 100 data/benchmark/2000_100_100.csv -n ./tmp/split,0.11892247960300004,0.052689036127990654,0.1444139772,0.029938720000000026,0.019387269999999988,0.047558949200000006,0.21556943620000002,data/benchmark/2000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9900.csv -n ./tmp/split,0.12365857614100029,0.0013850023196402413,0.12287329720000001,0.08061733600000003,0.042796925000000006,0.1224851012,0.1306130832,data/benchmark/100_100_9900.csv -bin/csv-split -l 100 data/benchmark/100_5400_100.csv -n ./tmp/split,0.07845312591900003,0.0010145450654237965,0.0778320562,0.05417429799999998,0.024112489999999993,0.0774817402,0.0838781312,data/benchmark/100_5400_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4100.csv -n ./tmp/split,0.05132064042000002,0.0006962512785539658,0.051091609700000006,0.03383529299999999,0.017370385999999984,0.050536454200000004,0.055079343200000005,data/benchmark/100_100_4100.csv -bin/csv-split -l 100 data/benchmark/3300_100_100.csv -n ./tmp/split,0.12466649768699994,0.043238690814107895,0.11554888270000001,0.04856440000000003,0.031214653999999988,0.0780892062,0.27622360320000006,data/benchmark/3300_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7600.csv -n ./tmp/split,0.09337980060900011,0.0010586883573754494,0.0929890352,0.06220767299999999,0.030944407000000004,0.0921503122,0.10320478720000001,data/benchmark/100_100_7600.csv -bin/csv-split -l 100 data/benchmark/6100_100_100.csv -n ./tmp/split,0.19210833416800005,0.023394676548268597,0.1855978362,0.08983894000000009,0.056866660999999964,0.1438019032,0.4312173872,data/benchmark/6100_100_100.csv -bin/csv-split -l 100 data/benchmark/100_8000_100.csv -n ./tmp/split,0.11518928292900008,0.0011042104505544334,0.1147507242,0.07979591199999993,0.03513753600000002,0.1139643362,0.12255250720000001,data/benchmark/100_8000_100.csv -bin/csv-split -l 100 data/benchmark/3400_100_100.csv -n ./tmp/split,0.10423960816000012,0.011482623360758679,0.1031258832,0.05026053899999998,0.03224892500000001,0.0807512622,0.1838679342,data/benchmark/3400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_500_100.csv -n ./tmp/split,0.008011090406999998,0.0005130318407500726,0.0077486887,0.0055361590000000006,0.0024470809999999994,0.0075323692,0.011489196200000001,data/benchmark/100_500_100.csv -bin/csv-split -l 100 data/benchmark/2900_100_100.csv -n ./tmp/split,0.08724159968,0.018389524958910393,0.0753792012,0.042705877000000024,0.027162093999999967,0.0681677332,0.1881537242,data/benchmark/2900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5100.csv -n ./tmp/split,0.062926203295,0.0010689333534906343,0.06245472170000001,0.04188491699999999,0.02089059099999998,0.062069307200000014,0.0696530412,data/benchmark/100_100_5100.csv -bin/csv-split -l 100 data/benchmark/7200_100_100.csv -n ./tmp/split,0.2267174676929999,0.021818853317167874,0.23540311070000003,0.10563168399999988,0.06651705300000002,0.1690123522,0.35728054620000005,data/benchmark/7200_100_100.csv -bin/csv-split -l 100 data/benchmark/9200_100_100.csv -n ./tmp/split,0.29002736570100013,0.02300401314507374,0.29089518570000006,0.1346744419999999,0.08497683599999996,0.2150359142,0.43846736720000007,data/benchmark/9200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_4500_100.csv -n ./tmp/split,0.06497085027300004,0.0009423131546945272,0.06441499519999999,0.045417112000000044,0.019420600999999996,0.0641110312,0.0715783882,data/benchmark/100_4500_100.csv -bin/csv-split -l 100 data/benchmark/100_7000_100.csv -n ./tmp/split,0.10017236440400008,0.0010615298249541,0.0996023067,0.07032524199999995,0.029657160999999967,0.0990358852,0.1064058112,data/benchmark/100_7000_100.csv -bin/csv-split -l 100 data/benchmark/100_3400_100.csv -n ./tmp/split,0.049314239206000005,0.0007827053175687814,0.04892798370000001,0.03421552899999996,0.014983288000000016,0.048591157200000006,0.05664059920000001,data/benchmark/100_3400_100.csv -bin/csv-split -l 100 data/benchmark/100_2200_100.csv -n ./tmp/split,0.032306680215000015,0.0006042760012166059,0.032026600200000005,0.022410642999999994,0.00981198799999999,0.031781278200000006,0.04063094020000001,data/benchmark/100_2200_100.csv -bin/csv-split -l 100 data/benchmark/100_5800_100.csv -n ./tmp/split,0.08337861680099996,0.0009878752960289265,0.0828628867,0.058332296999999964,0.024880129999999983,0.0822277052,0.0895222512,data/benchmark/100_5800_100.csv -bin/csv-split -l 100 data/benchmark/100_7300_100.csv -n ./tmp/split,0.10459706479699991,0.001166114184940907,0.1039457297,0.07266828299999993,0.03173224500000002,0.1032039922,0.10813837920000001,data/benchmark/100_7300_100.csv -bin/csv-split -l 100 data/benchmark/5100_100_100.csv -n ./tmp/split,0.1574839264330001,0.013171742456169746,0.1573815092,0.074990894,0.047165546000000017,0.12021797320000001,0.2042939252,data/benchmark/5100_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2400.csv -n ./tmp/split,0.030141755742000013,0.0007504017542015181,0.0300749232,0.020156119999999993,0.00989299200000001,0.029525986200000003,0.03810979020000001,data/benchmark/100_100_2400.csv -bin/csv-split -l 100 data/benchmark/100_3800_100.csv -n ./tmp/split,0.054727766702999885,0.0009055944035779221,0.054191408700000006,0.03837902499999998,0.016227689000000003,0.054047056200000006,0.0613016122,data/benchmark/100_3800_100.csv -bin/csv-split -l 100 data/benchmark/100_3700_100.csv -n ./tmp/split,0.05350434278900007,0.0006690435647482104,0.053743875200000006,0.03750592799999999,0.01588013400000001,0.0525964022,0.06054098620000001,data/benchmark/100_3700_100.csv -bin/csv-split -l 100 data/benchmark/100_5600_100.csv -n ./tmp/split,0.080411203127,0.0008967495516655681,0.0799360857,0.05571755200000004,0.024529796000000006,0.0794064662,0.0862030182,data/benchmark/100_5600_100.csv -bin/csv-split -l 100 data/benchmark/3200_100_100.csv -n ./tmp/split,0.097275807278,0.015573966198806938,0.0980403797,0.047306994,0.030104294000000018,0.0756152122,0.1829002632,data/benchmark/3200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_2500_100.csv -n ./tmp/split,0.03709036585600002,0.0008539138491186685,0.0367592367,0.025647412,0.011336966999999991,0.0363657932,0.044197591200000004,data/benchmark/100_2500_100.csv -bin/csv-split -l 100 data/benchmark/100_100_8000.csv -n ./tmp/split,0.09739277742000012,0.0013367766016210594,0.0966521742,0.06499638700000007,0.03220705299999997,0.09614421620000001,0.1046379312,data/benchmark/100_100_8000.csv -bin/csv-split -l 100 data/benchmark/100_100_4900.csv -n ./tmp/split,0.06093105965299998,0.0010346135545966277,0.06071844220000001,0.040477722000000015,0.02031471599999999,0.05995646820000001,0.0686646882,data/benchmark/100_100_4900.csv -bin/csv-split -l 100 data/benchmark/100_6800_100.csv -n ./tmp/split,0.09709606008000006,0.0010744461075791628,0.0964264352,0.06775273699999997,0.02914938999999999,0.0961949472,0.1037242322,data/benchmark/100_6800_100.csv -bin/csv-split -l 100 data/benchmark/600_100_100.csv -n ./tmp/split,0.014364034821000002,0.0005757498874666788,0.014420215200000001,0.008708476999999994,0.005598491000000004,0.013593825200000001,0.0191644162,data/benchmark/600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_9600_100.csv -n ./tmp/split,0.13715729869599996,0.001380222986425655,0.1363019117,0.09636908399999997,0.04053235999999996,0.1358485582,0.1420997022,data/benchmark/100_9600_100.csv -bin/csv-split -l 100 data/benchmark/800_100_100.csv -n ./tmp/split,0.019343241011000014,0.00231489882787192,0.019003368700000002,0.011704139000000014,0.007337091000000005,0.0182973182,0.05041343620000001,data/benchmark/800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4300.csv -n ./tmp/split,0.052678628857999996,0.0009106514494605627,0.05223428670000001,0.035262461999999994,0.017296645999999992,0.05180970520000001,0.060065998200000005,data/benchmark/100_100_4300.csv -bin/csv-split -l 100 data/benchmark/5300_100_100.csv -n ./tmp/split,0.16502094334000003,0.016178837199139432,0.1628921057,0.07783653099999982,0.048890380999999934,0.1241816822,0.29729492920000006,data/benchmark/5300_100_100.csv -bin/csv-split -l 100 data/benchmark/100_5900_100.csv -n ./tmp/split,0.08434831253399991,0.0013038916635820278,0.08359876420000001,0.05941153000000004,0.024754490999999986,0.0832454512,0.0938244492,data/benchmark/100_5900_100.csv -bin/csv-split -l 100 data/benchmark/100_2800_100.csv -n ./tmp/split,0.04083455351700008,0.0007989923006693499,0.040877423200000006,0.028273836999999975,0.012462573999999988,0.040070738200000004,0.046631123200000006,data/benchmark/100_2800_100.csv -bin/csv-split -l 100 data/benchmark/100_3500_100.csv -n ./tmp/split,0.050734715102000005,0.0008760159528025997,0.050831471200000006,0.035617038999999975,0.01500148199999999,0.049829716200000006,0.05728786720000001,data/benchmark/100_3500_100.csv -bin/csv-split -l 100 data/benchmark/3900_100_100.csv -n ./tmp/split,0.11987781222499999,0.016178392447987557,0.1209803797,0.057198916999999995,0.03602227799999997,0.0915203722,0.26002796320000005,data/benchmark/3900_100_100.csv -bin/csv-split -l 100 data/benchmark/5400_100_100.csv -n ./tmp/split,0.16746232850499967,0.013917352496992491,0.1687323987,0.07913655499999989,0.051221222000000025,0.1274771472,0.22285779220000002,data/benchmark/5400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_5000_100.csv -n ./tmp/split,0.07291522217599994,0.0012629901993253924,0.0727235762,0.05071878399999991,0.022041511999999996,0.0716805082,0.0820203332,data/benchmark/100_5000_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2000.csv -n ./tmp/split,0.025493954878999983,0.0008193330011526145,0.0253612317,0.016886712999999998,0.008532657999999995,0.0246536212,0.032407296200000005,data/benchmark/100_100_2000.csv -bin/csv-split -l 100 data/benchmark/100_600_100.csv -n ./tmp/split,0.009712994917,0.0005954159153300818,0.0098540902,0.006600152999999996,0.003078141300000002,0.0089686882,0.0138459092,data/benchmark/100_600_100.csv -bin/csv-split -l 100 data/benchmark/4500_100_100.csv -n ./tmp/split,0.13784672515599997,0.014130521230322733,0.1353061362,0.06616262999999999,0.042258967999999966,0.1061082712,0.2172038152,data/benchmark/4500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6300.csv -n ./tmp/split,0.07692229380299999,0.0009969872361686363,0.0763056782,0.051416403000000034,0.025347347999999974,0.0759299452,0.0839198292,data/benchmark/100_100_6300.csv -bin/csv-split -l 100 data/benchmark/100_2400_100.csv -n ./tmp/split,0.03544707855500004,0.0008398447357980851,0.03543829970000001,0.024167813999999944,0.011182183999999984,0.03467770020000001,0.043338118200000005,data/benchmark/100_2400_100.csv -bin/csv-split -l 100 data/benchmark/1600_100_100.csv -n ./tmp/split,0.04403026646400003,0.009246873175827975,0.038667802700000004,0.023576650999999994,0.015040111000000009,0.0374706512,0.08526782520000001,data/benchmark/1600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7500.csv -n ./tmp/split,0.09086332543099992,0.0010101267983073409,0.0902690142,0.06119115000000004,0.029501738999999985,0.0900306762,0.0989286212,data/benchmark/100_100_7500.csv -bin/csv-split -l 100 data/benchmark/100_3300_100.csv -n ./tmp/split,0.04786730141399998,0.0008323233453594906,0.047461422200000006,0.03340946400000004,0.01434085499999997,0.04715023720000001,0.054970613200000004,data/benchmark/100_3300_100.csv -bin/csv-split -l 100 data/benchmark/100_9000_100.csv -n ./tmp/split,0.12892521230300003,0.001523910979970144,0.1280480757,0.09035964199999995,0.03832131800000001,0.1264595992,0.1360476032,data/benchmark/100_9000_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3900.csv -n ./tmp/split,0.04839363584700001,0.0009446294539016177,0.04806613820000001,0.032485753000000055,0.015788912999999988,0.04751221320000001,0.05691699120000001,data/benchmark/100_100_3900.csv -bin/csv-split -l 100 data/benchmark/100_8800_100.csv -n ./tmp/split,0.12651974798899976,0.0013901891101476805,0.1256373017,0.08830961500000008,0.037974171000000015,0.1251989892,0.1328640302,data/benchmark/100_8800_100.csv -bin/csv-split -l 100 data/benchmark/3800_100_100.csv -n ./tmp/split,0.1165912234759999,0.011753833890817742,0.11349387420000001,0.05615357299999999,0.03573240399999999,0.0902900732,0.20293721720000002,data/benchmark/3800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_3100_100.csv -n ./tmp/split,0.04509263553199995,0.0007421864753679443,0.04477751420000001,0.031459344999999986,0.013519642000000004,0.044414528200000004,0.05219423620000001,data/benchmark/100_3100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_800.csv -n ./tmp/split,0.011179392277999979,0.0006329823915058287,0.0112748217,0.0075220479999999895,0.0036140299999999972,0.0102492082,0.0154584272,data/benchmark/100_100_800.csv -bin/csv-split -l 100 data/benchmark/100_7100_100.csv -n ./tmp/split,0.10258079685099986,0.0012430136625951945,0.10187030020000001,0.07162004399999991,0.030768018000000015,0.1013664892,0.1102599942,data/benchmark/100_7100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_400.csv -n ./tmp/split,0.005546341788000002,0.0003111812217926632,0.005425999200000001,0.0037140793500000046,0.0018573532999999994,0.0053113252,0.0078366372,data/benchmark/100_100_400.csv -bin/csv-split -l 100 data/benchmark/100_100_1100.csv -n ./tmp/split,0.01454286423300001,0.0007432440061968355,0.014223490200000001,0.009552627000000008,0.004941596699999999,0.013949053200000002,0.019553286200000002,data/benchmark/100_100_1100.csv -bin/csv-split -l 100 data/benchmark/100_100_200.csv -n ./tmp/split,0.003155828417999999,0.00039045024519554847,0.0029933252000000003,0.0021125330049999963,0.0010929110999999992,0.0027906962,0.005187239200000001,data/benchmark/100_100_200.csv -bin/csv-split -l 100 data/benchmark/100_5100_100.csv -n ./tmp/split,0.07343990771900001,0.0009888267549475636,0.07296916719999999,0.05122646700000002,0.022054673999999993,0.0728177762,0.0818946822,data/benchmark/100_5100_100.csv -bin/csv-split -l 100 data/benchmark/1300_100_100.csv -n ./tmp/split,0.034208535947999975,0.009641318942728435,0.030844916700000002,0.01884478100000001,0.012033149999999994,0.0302568142,0.0822530652,data/benchmark/1300_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7800.csv -n ./tmp/split,0.09537557022100007,0.0014902884754795268,0.0944918102,0.06362279300000002,0.03157190699999997,0.0938108342,0.1031152962,data/benchmark/100_100_7800.csv -bin/csv-split -l 100 data/benchmark/100_100_8400.csv -n ./tmp/split,0.10233395980599996,0.0013233210341699509,0.10173512770000001,0.06890975900000001,0.03323311799999999,0.1011007672,0.1111330242,data/benchmark/100_100_8400.csv -bin/csv-split -l 100 data/benchmark/100_100_4200.csv -n ./tmp/split,0.05160423407499999,0.0008905301705792244,0.05101151370000001,0.034394185999999966,0.017094148999999982,0.050824920200000005,0.058972870200000006,data/benchmark/100_100_4200.csv -bin/csv-split -l 100 data/benchmark/100_100_2700.csv -n ./tmp/split,0.03366945504200003,0.0006463050766227159,0.033405161700000005,0.02257719099999998,0.010999874,0.03304041320000001,0.039280290200000005,data/benchmark/100_100_2700.csv -bin/csv-split -l 100 data/benchmark/100_100_8500.csv -n ./tmp/split,0.10339372528500003,0.001112457996543139,0.1028371072,0.070077126,0.03311517000000003,0.1022167962,0.1087490882,data/benchmark/100_100_8500.csv -bin/csv-split -l 100 data/benchmark/5900_100_100.csv -n ./tmp/split,0.18310412016200017,0.018362573334141694,0.17787200920000001,0.08655272600000015,0.05440616300000001,0.13896010620000002,0.30770475720000007,data/benchmark/5900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7700.csv -n ./tmp/split,0.09355102925599994,0.001232201909163913,0.0929095942,0.063253731,0.030108356000000044,0.0922560972,0.10215274120000001,data/benchmark/100_100_7700.csv -bin/csv-split -l 100 data/benchmark/100_8700_100.csv -n ./tmp/split,0.12447307891400025,0.0015997606932678266,0.1237300722,0.08768114999999997,0.036544915999999976,0.12276034820000001,0.1323837982,data/benchmark/100_8700_100.csv -bin/csv-split -l 100 data/benchmark/100_6600_100.csv -n ./tmp/split,0.09401040121800001,0.001144838494262755,0.0933564687,0.06613484000000008,0.027695176999999977,0.0930395292,0.1021141322,data/benchmark/100_6600_100.csv -bin/csv-split -l 100 data/benchmark/7400_100_100.csv -n ./tmp/split,0.23206716646500006,0.024007718090903966,0.23323716020000002,0.10862776500000022,0.06856971699999984,0.1734070482,0.38449127720000004,data/benchmark/7400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_100.csv -n ./tmp/split,0.0017498898229999997,0.000291020842779181,0.0016307097000000004,0.0012337529350000026,0.0006625404000000007,0.0015732552,0.0034703692000000006,data/benchmark/100_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9100.csv -n ./tmp/split,0.11026470502200017,0.0015723451896052028,0.1094624297,0.07384738600000003,0.03620136399999998,0.1089694372,0.1208090812,data/benchmark/100_100_9100.csv -bin/csv-split -l 100 data/benchmark/7100_100_100.csv -n ./tmp/split,0.22257359728299977,0.016194182727075762,0.2250279427,0.10437782399999994,0.06697834900000003,0.1682207652,0.2880300612,data/benchmark/7100_100_100.csv -bin/csv-split -l 100 data/benchmark/7000_100_100.csv -n ./tmp/split,0.21968874100799995,0.01611613766207431,0.22121569070000002,0.10318938299999993,0.06631468199999997,0.1656033572,0.28081198420000003,data/benchmark/7000_100_100.csv -bin/csv-split -l 100 data/benchmark/9400_100_100.csv -n ./tmp/split,0.29584642347799955,0.022692252157588532,0.3005149972000001,0.137873358,0.08909509600000018,0.2226244822,0.40245772920000006,data/benchmark/9400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_2600_100.csv -n ./tmp/split,0.03812524668999996,0.0004721995690340074,0.03788335270000001,0.026249988999999994,0.011785315999999995,0.03756565220000001,0.040312091200000004,data/benchmark/100_2600_100.csv -bin/csv-split -l 100 data/benchmark/100_100_8600.csv -n ./tmp/split,0.105564731706,0.0012493822815042835,0.1047057817,0.07017802300000002,0.035185172999999965,0.1043943472,0.1119735672,data/benchmark/100_100_8600.csv -bin/csv-split -l 100 data/benchmark/9700_100_100.csv -n ./tmp/split,0.3055878153209997,0.02290009140696347,0.3092657622,0.14284232100000016,0.09145350700000004,0.2286660862,0.38395674820000003,data/benchmark/9700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_1900_100.csv -n ./tmp/split,0.027994627203999978,0.000501957998814566,0.0277727667,0.01930407200000001,0.008605944000000008,0.0275923892,0.032406386200000005,data/benchmark/100_1900_100.csv -bin/csv-split -l 100 data/benchmark/1000_100_100.csv -n ./tmp/split,0.02478550597300001,0.003330808939101343,0.024091964700000003,0.014598390999999983,0.009222296000000003,0.0230862062,0.0679135482,data/benchmark/1000_100_100.csv -bin/csv-split -l 100 data/benchmark/6600_100_100.csv -n ./tmp/split,0.2049001967859999,0.01737795196015836,0.20457798770000002,0.09733319300000005,0.06254762700000005,0.1562050112,0.25954184920000006,data/benchmark/6600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_1500_100.csv -n ./tmp/split,0.022563888763,0.0007199841190314668,0.022247968200000003,0.015303307000000006,0.007194323999999995,0.022036356200000003,0.0293292232,data/benchmark/100_1500_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7200.csv -n ./tmp/split,0.08806050802599999,0.0009371579666750489,0.0876302992,0.0588704210000001,0.029020050000000013,0.0870920022,0.0928136492,data/benchmark/100_100_7200.csv -bin/csv-split -l 100 data/benchmark/7300_100_100.csv -n ./tmp/split,0.2293905325159999,0.01685907697118852,0.22864734920000002,0.10729089000000006,0.06861271100000002,0.1720101092,0.32766113320000007,data/benchmark/7300_100_100.csv -bin/csv-split -l 100 data/benchmark/10000_100_100.csv -n ./tmp/split,0.3155837604570003,0.026219528725545036,0.31649597920000005,0.14714823600000007,0.093244177,0.2348241452,0.41182134020000005,data/benchmark/10000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5400.csv -n ./tmp/split,0.06581908611500002,0.0009677261161479057,0.0653008792,0.04384149500000001,0.02184061500000003,0.0649970012,0.0733270002,data/benchmark/100_100_5400.csv -bin/csv-split -l 100 data/benchmark/100_100_7100.csv -n ./tmp/split,0.08640621780400001,0.0014092480271091416,0.0855484997,0.057797731000000054,0.028439311000000002,0.08518047720000001,0.0961988102,data/benchmark/100_100_7100.csv -bin/csv-split -l 100 data/benchmark/100_7200_100.csv -n ./tmp/split,0.10324852029499998,0.001331240753936966,0.10252576020000001,0.07230087600000003,0.030753733000000005,0.1021385792,0.11117637820000001,data/benchmark/100_7200_100.csv -bin/csv-split -l 100 data/benchmark/100_100_300.csv -n ./tmp/split,0.004398304225000002,0.00043271782007900546,0.0041685142,0.0029435217400000007,0.0014811466000000022,0.0040605472,0.0070873051999999995,data/benchmark/100_100_300.csv -bin/csv-split -l 100 data/benchmark/100_100_10000.csv -n ./tmp/split,0.12256310359299995,0.001252379171811524,0.1220257072,0.0816765219999999,0.04066136600000006,0.1212675862,0.1306114732,data/benchmark/100_100_10000.csv -bin/csv-split -l 100 data/benchmark/100_3200_100.csv -n ./tmp/split,0.046435234275000015,0.0006924707010144516,0.04608021170000001,0.032131501000000014,0.014198608999999994,0.04581836920000001,0.052613338200000005,data/benchmark/100_3200_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2100.csv -n ./tmp/split,0.026800059642000027,0.0009054259908502483,0.026624926200000003,0.017754496000000005,0.008961647999999984,0.0259715532,0.0345795762,data/benchmark/100_100_2100.csv -bin/csv-split -l 100 data/benchmark/100_100_4500.csv -n ./tmp/split,0.05534869125300002,0.0009828292132848487,0.05471506520000001,0.03690199799999995,0.018329681999999962,0.05441089620000001,0.06151977720000001,data/benchmark/100_100_4500.csv -bin/csv-split -l 100 data/benchmark/100_200_100.csv -n ./tmp/split,0.003375130219999994,0.00033803658470572866,0.0032666292,0.0023874663050000005,0.0010404713000000008,0.0030424492000000005,0.0054642762,data/benchmark/100_200_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3400.csv -n ./tmp/split,0.0419262493650001,0.0006897924713853988,0.04149997870000001,0.027990434000000015,0.013838298999999981,0.04126121120000001,0.04624583620000001,data/benchmark/100_100_3400.csv -bin/csv-split -l 100 data/benchmark/100_6200_100.csv -n ./tmp/split,0.08914597258099995,0.0011192651776991064,0.08894693570000001,0.06263666399999998,0.026335344000000007,0.08783232220000001,0.0954459032,data/benchmark/100_6200_100.csv -bin/csv-split -l 100 data/benchmark/100_5700_100.csv -n ./tmp/split,0.08197654658099995,0.0009949295960954684,0.0814177692,0.05745170900000002,0.02436276399999999,0.0808896782,0.0883373292,data/benchmark/100_5700_100.csv -bin/csv-split -l 100 data/benchmark/8500_100_100.csv -n ./tmp/split,0.26585198028000034,0.021335422176899356,0.26650624720000005,0.12500000300000022,0.08033505699999995,0.2008807182,0.3553710312,data/benchmark/8500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5800.csv -n ./tmp/split,0.07113555440200003,0.0010363194168380066,0.0704887692,0.04744318099999994,0.02354357499999999,0.0700226982,0.0769059302,data/benchmark/100_100_5800.csv -bin/csv-split -l 100 data/benchmark/100_100_5500.csv -n ./tmp/split,0.06724304433499996,0.0011395468532780953,0.0664476147,0.045018519999999944,0.02207936600000005,0.0661508232,0.0742804142,data/benchmark/100_100_5500.csv -bin/csv-split -l 100 data/benchmark/7600_100_100.csv -n ./tmp/split,0.23686791221099987,0.02061109558037238,0.2402693152,0.11162066299999998,0.0717268059999999,0.17969540320000002,0.33698271820000003,data/benchmark/7600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_4700_100.csv -n ./tmp/split,0.06860661784800004,0.0007538330736493099,0.0688231127,0.04746306200000008,0.02099868699999998,0.0675864122,0.0720449362,data/benchmark/100_4700_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6100.csv -n ./tmp/split,0.07489939055999999,0.0008428106368796313,0.07440109719999999,0.05012709800000004,0.024628884999999986,0.0739169682,0.0796045942,data/benchmark/100_100_6100.csv -bin/csv-split -l 100 data/benchmark/100_100_8100.csv -n ./tmp/split,0.09889564337699995,0.0016115639046031974,0.09789690770000001,0.06598746200000002,0.03271120199999999,0.0975217712,0.1090493512,data/benchmark/100_100_8100.csv -bin/csv-split -l 100 data/benchmark/9600_100_100.csv -n ./tmp/split,0.3020911885250005,0.023469032465124728,0.3037547342000001,0.14106018000000006,0.09048905800000004,0.22715066120000002,0.42020274720000006,data/benchmark/9600_100_100.csv -bin/csv-split -l 100 data/benchmark/9800_100_100.csv -n ./tmp/split,0.30712338199099976,0.028553499513427408,0.31068985920000003,0.14414154999999987,0.09291214900000008,0.2310861442,0.5272085732,data/benchmark/9800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_700_100.csv -n ./tmp/split,0.011225257341000001,0.0005893688642756188,0.0112521662,0.007731768999999996,0.003454838499999996,0.0104931072,0.0142534452,data/benchmark/100_700_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3500.csv -n ./tmp/split,0.04358249296900004,0.0007947930008223888,0.0433854392,0.028835162999999994,0.014637946999999988,0.0427427552,0.05117944020000001,data/benchmark/100_100_3500.csv -bin/csv-split -l 100 data/benchmark/100_5300_100.csv -n ./tmp/split,0.07592889362999994,0.0012719835478071319,0.0752845132,0.05330851199999993,0.022450669999999975,0.0750277152,0.0855908732,data/benchmark/100_5300_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4800.csv -n ./tmp/split,0.05891624001500004,0.0009481363283848897,0.05844044770000001,0.03923308800000002,0.01954923799999999,0.058253769200000007,0.0681653162,data/benchmark/100_100_4800.csv -bin/csv-split -l 100 data/benchmark/100_100_8200.csv -n ./tmp/split,0.10036530130199985,0.00138770169954757,0.09953401170000001,0.06696436300000003,0.03319905799999998,0.0986474272,0.10458203320000001,data/benchmark/100_100_8200.csv -bin/csv-split -l 100 data/benchmark/100_9100_100.csv -n ./tmp/split,0.13121716422400004,0.0014420690725273461,0.1303707772,0.09184458599999991,0.03913293599999998,0.1297055342,0.1360522602,data/benchmark/100_9100_100.csv -bin/csv-split -l 100 data/benchmark/900_100_100.csv -n ./tmp/split,0.02197606530400001,0.002489321877638288,0.0217173277,0.013195960999999985,0.008514952000000001,0.0207859512,0.0763669312,data/benchmark/900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1300.csv -n ./tmp/split,0.017150373857000013,0.0007556646233413318,0.0167879097,0.011392452000000016,0.005704076000000002,0.016398422200000002,0.023356465200000003,data/benchmark/100_100_1300.csv -bin/csv-split -l 100 data/benchmark/100_2000_100.csv -n ./tmp/split,0.029397556859000015,0.0005976878855471132,0.029307223200000003,0.020309080999999986,0.009008384999999992,0.028795966200000002,0.03245652820000001,data/benchmark/100_2000_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4600.csv -n ./tmp/split,0.05614837020000012,0.0008549694845950653,0.05567936570000001,0.037418182999999966,0.01860984900000002,0.05550933420000001,0.0644387912,data/benchmark/100_100_4600.csv -bin/csv-split -l 100 data/benchmark/100_100_7900.csv -n ./tmp/split,0.09588364569400017,0.0013513453645131825,0.0951794172,0.06444049100000003,0.03125551,0.0946449872,0.1019676132,data/benchmark/100_100_7900.csv -bin/csv-split -l 100 data/benchmark/100_2300_100.csv -n ./tmp/split,0.033722784586000004,0.0007617776304043352,0.0333828907,0.023509312000000025,0.010117548999999998,0.0331757962,0.04178538920000001,data/benchmark/100_2300_100.csv -bin/csv-split -l 100 data/benchmark/4400_100_100.csv -n ./tmp/split,0.13484259334900003,0.014461672018019567,0.1313054132,0.064968068,0.041592355999999976,0.1044708082,0.21746797720000002,data/benchmark/4400_100_100.csv -bin/csv-split -l 100 data/benchmark/1500_100_100.csv -n ./tmp/split,0.04164506218199996,0.00913485909368606,0.0365751052,0.022156840999999997,0.014253342999999991,0.035406616200000005,0.0877036362,data/benchmark/1500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_500.csv -n ./tmp/split,0.007023537676,0.0005600476946867734,0.0067481732,0.004577750869999999,0.0024266733000000013,0.0065394332,0.0104490522,data/benchmark/100_100_500.csv -bin/csv-split -l 100 data/benchmark/4300_100_100.csv -n ./tmp/split,0.13142296732199998,0.013635664585807387,0.1295038087,0.063321293,0.040790530000000026,0.1016245052,0.2207358352,data/benchmark/4300_100_100.csv -bin/csv-split -l 100 data/benchmark/7800_100_100.csv -n ./tmp/split,0.24433812134500013,0.02387339312071309,0.2476555937,0.11433914699999985,0.07391768999999992,0.18429323920000001,0.49624648220000006,data/benchmark/7800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_800_100.csv -n ./tmp/split,0.012624362401999992,0.0006934154182940179,0.0122630132,0.00844311400000001,0.004128459100000002,0.011902473200000001,0.017566202200000002,data/benchmark/100_800_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2900.csv -n ./tmp/split,0.036262098443000025,0.0006709908169954891,0.036304439200000004,0.024031144000000056,0.012136555,0.03552708820000001,0.042982641200000005,data/benchmark/100_100_2900.csv -bin/csv-split -l 100 data/benchmark/7700_100_100.csv -n ./tmp/split,0.24060446498299992,0.022271152132069875,0.24382269620000002,0.11284569799999995,0.07353116900000002,0.1826998152,0.44232122120000006,data/benchmark/7700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_5200_100.csv -n ./tmp/split,0.07473576999999998,0.0011079557278096763,0.07409835719999999,0.051042318,0.023540905999999986,0.0736970192,0.0828733762,data/benchmark/100_5200_100.csv -bin/csv-split -l 100 data/benchmark/100_9400_100.csv -n ./tmp/split,0.13496436358000002,0.001284990201295747,0.13431445670000003,0.0941108090000001,0.04061800999999998,0.1334844182,0.1386691222,data/benchmark/100_9400_100.csv -bin/csv-split -l 100 data/benchmark/2100_100_100.csv -n ./tmp/split,0.060213275502,0.014784904291138719,0.05094358970000001,0.030917754000000026,0.019655960999999975,0.049194710200000005,0.1168279792,data/benchmark/2100_100_100.csv -bin/csv-split -l 100 data/benchmark/100_2900_100.csv -n ./tmp/split,0.042242705453999996,0.0006172471021161623,0.04200040570000001,0.029457833000000003,0.012686473999999996,0.04161040020000001,0.048168253200000004,data/benchmark/100_2900_100.csv -bin/csv-split -l 100 data/benchmark/100_4100_100.csv -n ./tmp/split,0.059107799190999934,0.0006148152340976936,0.058849519200000006,0.04143650100000003,0.017544650000000002,0.05845729920000001,0.06210066820000001,data/benchmark/100_4100_100.csv -bin/csv-split -l 100 data/benchmark/100_1800_100.csv -n ./tmp/split,0.02672001412300002,0.0008321403723329612,0.0265646187,0.018525912000000005,0.008107124999999996,0.026029133200000002,0.03339206520000001,data/benchmark/100_1800_100.csv -bin/csv-split -l 100 data/benchmark/100_100_8800.csv -n ./tmp/split,0.10743314024799987,0.001313743888484065,0.1068754417,0.0720155829999999,0.035202815000000026,0.1062974552,0.1174787822,data/benchmark/100_100_8800.csv -bin/csv-split -l 100 data/benchmark/2600_100_100.csv -n ./tmp/split,0.07722734911300012,0.018283372826801435,0.0631764292,0.03813249599999996,0.024202450000000025,0.0610704102,0.1308770742,data/benchmark/2600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4400.csv -n ./tmp/split,0.054137151700999926,0.0010312568875479723,0.05453733070000001,0.036167831,0.017853529999999992,0.05305916320000001,0.0608945212,data/benchmark/100_100_4400.csv -bin/csv-split -l 100 data/benchmark/100_100_1500.csv -n ./tmp/split,0.019724276305000028,0.0008141369075420714,0.019660359199999998,0.013000173999999996,0.006664122999999995,0.018817133200000002,0.0245983652,data/benchmark/100_100_1500.csv -bin/csv-split -l 100 data/benchmark/100_7600_100.csv -n ./tmp/split,0.10900358157300008,0.0011738636042714235,0.10828899820000001,0.07575731200000003,0.033047884000000076,0.1074039722,0.11780057120000001,data/benchmark/100_7600_100.csv -bin/csv-split -l 100 data/benchmark/8000_100_100.csv -n ./tmp/split,0.24986265381700035,0.02145142821011789,0.25122075070000005,0.11778692599999986,0.07527222,0.1886806172,0.36270992020000004,data/benchmark/8000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7400.csv -n ./tmp/split,0.09046401155599992,0.0011892140496485677,0.08986285620000001,0.06069396899999995,0.029586789000000027,0.08928610320000001,0.0992681562,data/benchmark/100_100_7400.csv -bin/csv-split -l 100 data/benchmark/100_6400_100.csv -n ./tmp/split,0.09200273826800004,0.001118176523669598,0.09148980970000001,0.06384757500000006,0.02796767500000002,0.09074139120000001,0.0962834342,data/benchmark/100_6400_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1700.csv -n ./tmp/split,0.022289275346000014,0.0008065323953943088,0.0221690387,0.014790163999999984,0.007426113999999992,0.021213157200000003,0.027043272200000003,data/benchmark/100_100_1700.csv -bin/csv-split -l 100 data/benchmark/100_7700_100.csv -n ./tmp/split,0.11098392620500006,0.0011764081050797339,0.11033747020000001,0.07739755400000006,0.03338364699999999,0.1098706862,0.11620341120000001,data/benchmark/100_7700_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1000.csv -n ./tmp/split,0.013540770567000015,0.0007329677264180122,0.013113173200000001,0.008905304999999983,0.004586305000000003,0.0127731892,0.017447497200000002,data/benchmark/100_100_1000.csv -bin/csv-split -l 100 data/benchmark/9500_100_100.csv -n ./tmp/split,0.2984516575480003,0.02283964668352094,0.30329208220000003,0.13982735799999998,0.08955531899999992,0.22412803020000002,0.41992416520000003,data/benchmark/9500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4700.csv -n ./tmp/split,0.05860813368200011,0.0009610652869581021,0.05810805220000001,0.038310105999999955,0.020165601000000033,0.05770973720000001,0.0677335492,data/benchmark/100_100_4700.csv -bin/csv-split -l 100 data/benchmark/6900_100_100.csv -n ./tmp/split,0.21655281582000013,0.01681166628902363,0.2207129122,0.1016444499999998,0.06541939600000009,0.16443863520000002,0.3184832222,data/benchmark/6900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6000.csv -n ./tmp/split,0.07424384192399998,0.0010061451219847647,0.0737183397,0.04910914800000009,0.024982586999999976,0.0734158602,0.0831408372,data/benchmark/100_100_6000.csv -bin/csv-split -l 100 data/benchmark/100_100_2800.csv -n ./tmp/split,0.035340754729999965,0.0005622317552792175,0.0350810037,0.023139357000000017,0.012115892999999987,0.034813242200000004,0.041920642200000004,data/benchmark/100_100_2800.csv -bin/csv-split -l 100 data/benchmark/100_100_9800.csv -n ./tmp/split,0.1206386204740001,0.0013613595899043531,0.11987581620000001,0.08011581699999995,0.04030356499999996,0.1195401572,0.1364317672,data/benchmark/100_100_9800.csv -bin/csv-split -l 100 data/benchmark/100_8200_100.csv -n ./tmp/split,0.118737916059,0.0013309668478397386,0.1180952527,0.08221997699999994,0.036295541000000014,0.11743783020000001,0.1261327752,data/benchmark/100_8200_100.csv -bin/csv-split -l 100 data/benchmark/100_9700_100.csv -n ./tmp/split,0.1410141355070001,0.0013448360520465197,0.1404777182,0.097807768,0.04294266300000003,0.1395515352,0.1483819862,data/benchmark/100_9700_100.csv -bin/csv-split -l 100 data/benchmark/5800_100_100.csv -n ./tmp/split,0.1807254252159998,0.019127645697699844,0.17638833869999998,0.08503644700000007,0.05401816300000003,0.13687979420000002,0.40061776720000003,data/benchmark/5800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6200.csv -n ./tmp/split,0.07630843005900007,0.0011090878313251363,0.0757389027,0.050930035000000026,0.02520647099999997,0.0754631422,0.0849037762,data/benchmark/100_100_6200.csv -bin/csv-split -l 100 data/benchmark/100_5500_100.csv -n ./tmp/split,0.07938408743099996,0.001141139773062014,0.07869900020000001,0.055542771000000046,0.023679178999999998,0.0783958022,0.0864254262,data/benchmark/100_5500_100.csv -bin/csv-split -l 100 data/benchmark/100_3600_100.csv -n ./tmp/split,0.052461025208000014,0.0009271153016218013,0.052381279700000005,0.03661046699999997,0.015725645000000003,0.05154325320000001,0.05863012220000001,data/benchmark/100_3600_100.csv -bin/csv-split -l 100 data/benchmark/1800_100_100.csv -n ./tmp/split,0.050289635087999975,0.013066126180146147,0.04327112570000001,0.02651248399999999,0.016707593999999996,0.042182124200000004,0.0944668572,data/benchmark/1800_100_100.csv -bin/csv-split -l 100 data/benchmark/1700_100_100.csv -n ./tmp/split,0.04810441187900006,0.013942145837969093,0.04050732870000001,0.02492589300000003,0.015703909999999977,0.03972170120000001,0.0992693482,data/benchmark/1700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_700.csv -n ./tmp/split,0.009792314144999995,0.0005939807839164902,0.009944032700000001,0.00650865900000001,0.003248188199999998,0.0089789362,0.0136799382,data/benchmark/100_100_700.csv -bin/csv-split -l 100 data/benchmark/100_4600_100.csv -n ./tmp/split,0.06671342665899999,0.000989385193833825,0.0661299997,0.046412752999999925,0.02015636699999995,0.0659342502,0.0742505762,data/benchmark/100_4600_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9200.csv -n ./tmp/split,0.11216540680099996,0.0013553359321077053,0.1115062677,0.07455614599999999,0.03741234499999999,0.1108630342,0.1163837682,data/benchmark/100_100_9200.csv -bin/csv-split -l 100 data/benchmark/8900_100_100.csv -n ./tmp/split,0.27903798973500016,0.02318163491740463,0.2802355147000001,0.130670769,0.08244740500000004,0.2089676142,0.38305323020000004,data/benchmark/8900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_8500_100.csv -n ./tmp/split,0.12232564962000002,0.0013191075755926678,0.1216779922,0.08546726500000007,0.036623070999999986,0.12090664420000001,0.1293205362,data/benchmark/100_8500_100.csv -bin/csv-split -l 100 data/benchmark/100_100_8900.csv -n ./tmp/split,0.10891529126700006,0.0014432400541912898,0.1079793372,0.07309681800000012,0.03561200000000002,0.1075112142,0.1156456622,data/benchmark/100_100_8900.csv -bin/csv-split -l 100 data/benchmark/100_1400_100.csv -n ./tmp/split,0.021488605578000045,0.0007301152735668859,0.021345942700000002,0.014703050999999993,0.006715783700000011,0.0207069992,0.0253299222,data/benchmark/100_1400_100.csv -bin/csv-split -l 100 data/benchmark/4800_100_100.csv -n ./tmp/split,0.14711652950700005,0.026916246931867224,0.14920691270000003,0.07085429499999993,0.044632064999999915,0.1128844552,0.23034345220000002,data/benchmark/4800_100_100.csv -bin/csv-split -l 100 data/benchmark/6300_100_100.csv -n ./tmp/split,0.19706306894899991,0.020605472452481257,0.1897879237,0.092385014,0.058674505000000064,0.1476696892,0.3135800852,data/benchmark/6300_100_100.csv -bin/csv-split -l 100 data/benchmark/500_100_100.csv -n ./tmp/split,0.011714564168999997,0.0005668764754640916,0.011403233700000001,0.007254693999999998,0.004406203100000005,0.0111657332,0.0171179552,data/benchmark/500_100_100.csv -bin/csv-split -l 100 data/benchmark/9100_100_100.csv -n ./tmp/split,0.286997572876,0.026684585250215564,0.28526781320000005,0.13356386400000014,0.08412507799999994,0.2131786832,0.5814719722,data/benchmark/9100_100_100.csv -bin/csv-split -l 100 data/benchmark/3100_100_100.csv -n ./tmp/split,0.09229436920600007,0.014959137548855058,0.09425990819999999,0.04573116800000007,0.029263670000000023,0.0729645022,0.1838282012,data/benchmark/3100_100_100.csv -bin/csv-split -l 100 data/benchmark/5700_100_100.csv -n ./tmp/split,0.17820380265399996,0.018948255752624724,0.17373479270000003,0.08354647099999997,0.053052372999999986,0.1337445432,0.35862489620000004,data/benchmark/5700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_8600_100.csv -n ./tmp/split,0.12303750147499998,0.0010346486450058302,0.1225571452,0.08617448900000016,0.03663708300000002,0.1216608532,0.1268769952,data/benchmark/100_8600_100.csv -bin/csv-split -l 100 data/benchmark/100_7900_100.csv -n ./tmp/split,0.11317071575100011,0.0013162735108393465,0.1124215182,0.07960446600000007,0.033348322999999944,0.11180554520000001,0.1206536212,data/benchmark/100_7900_100.csv -bin/csv-split -l 100 data/benchmark/9900_100_100.csv -n ./tmp/split,0.31284554019800065,0.026315806314502983,0.3091911117,0.1449323030000001,0.0917858139999999,0.2318648772,0.42369140820000006,data/benchmark/9900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_8300_100.csv -n ./tmp/split,0.11918885129100004,0.0013637721297075705,0.1185569612,0.08355981999999998,0.035403665,0.11781391120000001,0.1267594692,data/benchmark/100_8300_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6800.csv -n ./tmp/split,0.08308569956599991,0.0013439829650746292,0.0822015807,0.05557346499999998,0.027340779999999995,0.0817635092,0.0897060032,data/benchmark/100_100_6800.csv -bin/csv-split -l 100 data/benchmark/2200_100_100.csv -n ./tmp/split,0.06468274030399986,0.013857939510977227,0.0549047042,0.032532069999999975,0.020816468000000025,0.051977464200000004,0.1883356132,data/benchmark/2200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_7500_100.csv -n ./tmp/split,0.10785941881399998,0.0013988248759285854,0.1070439842,0.07488301100000004,0.03276723799999999,0.10670727020000001,0.11526619020000001,data/benchmark/100_7500_100.csv -bin/csv-split -l 100 data/benchmark/7500_100_100.csv -n ./tmp/split,0.2350611039940002,0.023767404282825106,0.24218670320000002,0.11050331400000006,0.06930211399999996,0.1761136572,0.36392558520000007,data/benchmark/7500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_9300_100.csv -n ./tmp/split,0.1332011399839999,0.0014459332740725727,0.1324049802,0.09324925700000009,0.03968934999999999,0.13204768120000002,0.1406073072,data/benchmark/100_9300_100.csv -bin/csv-split -l 100 data/benchmark/100_300_100.csv -n ./tmp/split,0.004704711481000007,0.00034256860659883775,0.0045976632,0.0031849069600000056,0.0015575668000000014,0.0045374952,0.0074515872,data/benchmark/100_300_100.csv -bin/csv-split -l 100 data/benchmark/100_4200_100.csv -n ./tmp/split,0.060934052809000036,0.000892859589258272,0.06039486720000001,0.04217221799999999,0.0186333,0.06012052620000001,0.0670548562,data/benchmark/100_4200_100.csv -bin/csv-split -l 100 data/benchmark/8400_100_100.csv -n ./tmp/split,0.2638314760960001,0.023836458528511885,0.26394148920000005,0.12314971700000002,0.07782478199999994,0.1969367142,0.48826164220000007,data/benchmark/8400_100_100.csv -bin/csv-split -l 100 data/benchmark/3600_100_100.csv -n ./tmp/split,0.10822624823999998,0.012288507297458914,0.1086369172,0.05320878400000004,0.033662279,0.0847060662,0.1715981152,data/benchmark/3600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9600.csv -n ./tmp/split,0.11692690641099993,0.0016039779813820808,0.1158935687,0.07855308300000001,0.03814427500000007,0.1155504442,0.1265752382,data/benchmark/100_100_9600.csv -bin/csv-split -l 100 data/benchmark/8300_100_100.csv -n ./tmp/split,0.2639127428440004,0.030672556890935985,0.2633473327,0.12228051199999994,0.07695013499999998,0.1945886412,0.42695533520000006,data/benchmark/8300_100_100.csv -bin/csv-split -l 100 data/benchmark/5600_100_100.csv -n ./tmp/split,0.17388527525300015,0.014698264775602267,0.1712385157,0.08217821800000007,0.052008276000000055,0.1317864092,0.2335976442,data/benchmark/5600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_10000_100.csv -n ./tmp/split,0.14428219320699986,0.0015030010978012657,0.14358996870000001,0.09985704200000008,0.04415040100000005,0.1426956262,0.1537679492,data/benchmark/100_10000_100.csv -bin/csv-split -l 100 data/benchmark/100_7400_100.csv -n ./tmp/split,0.10684121976100001,0.0014525351598077604,0.1059752402,0.07474791800000007,0.031873977000000005,0.1056677152,0.1160507122,data/benchmark/100_7400_100.csv -bin/csv-split -l 100 data/benchmark/4200_100_100.csv -n ./tmp/split,0.12936047473800016,0.017635660700748734,0.12797297270000002,0.06201890200000006,0.03943537900000003,0.09904466220000001,0.2696401332,data/benchmark/4200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5600.csv -n ./tmp/split,0.06936783677300003,0.0009561249316033687,0.06897885270000001,0.04588234700000005,0.02333380599999998,0.0682084722,0.0747258532,data/benchmark/100_100_5600.csv -bin/csv-split -l 100 data/benchmark/100_6700_100.csv -n ./tmp/split,0.09757942812,0.0014918556932251707,0.0968010077,0.06760735600000004,0.02976351599999996,0.0961789302,0.1068617812,data/benchmark/100_6700_100.csv -bin/csv-split -l 100 data/benchmark/100_100_4000.csv -n ./tmp/split,0.05020474684000004,0.0006609748732567748,0.050305960200000006,0.03314306399999999,0.016943255000000008,0.049346788200000005,0.05385711320000001,data/benchmark/100_100_4000.csv -bin/csv-split -l 100 data/benchmark/100_1000_100.csv -n ./tmp/split,0.015158384964000004,0.00044960532738318556,0.0150307097,0.010337204000000006,0.004774890400000003,0.014876390199999999,0.0200713132,data/benchmark/100_1000_100.csv -bin/csv-split -l 100 data/benchmark/8700_100_100.csv -n ./tmp/split,0.2750427640379999,0.026931044556343656,0.2726666647,0.12804426099999994,0.08179537899999986,0.2056222872,0.45732361520000003,data/benchmark/8700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9500.csv -n ./tmp/split,0.11674267158099996,0.0015383578382204511,0.1159179457,0.07675114799999994,0.039774446000000005,0.1155575622,0.12545718520000002,data/benchmark/100_100_9500.csv -bin/csv-split -l 100 data/benchmark/4700_100_100.csv -n ./tmp/split,0.14440769163500014,0.015280284407644026,0.1431630817,0.06921728299999992,0.04423127599999997,0.1113243142,0.22312475920000002,data/benchmark/4700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1800.csv -n ./tmp/split,0.023377563361999986,0.0007840949063796537,0.023075960200000002,0.015308604999999972,0.008001935000000002,0.0225287272,0.026999208200000003,data/benchmark/100_100_1800.csv -bin/csv-split -l 100 data/benchmark/100_1600_100.csv -n ./tmp/split,0.024231948907000016,0.0007737846778361409,0.0239488937,0.016524425000000002,0.007638529000000004,0.0234213992,0.030528573200000002,data/benchmark/100_1600_100.csv -bin/csv-split -l 100 data/benchmark/9300_100_100.csv -n ./tmp/split,0.2942724832880006,0.025129132041963785,0.29579295820000007,0.1367240460000001,0.08743718300000007,0.2198031892,0.40249062020000004,data/benchmark/9300_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3300.csv -n ./tmp/split,0.041444199527,0.0008299103409411436,0.0410988357,0.027232441999999975,0.014113867999999998,0.0407132482,0.04952456920000001,data/benchmark/100_100_3300.csv -bin/csv-split -l 100 data/benchmark/100_100_3000.csv -n ./tmp/split,0.037221143171999975,0.0007227936123151996,0.036839176700000004,0.02476503699999999,0.012355868000000006,0.036599006200000006,0.04196914720000001,data/benchmark/100_100_3000.csv -bin/csv-split -l 100 data/benchmark/100_2700_100.csv -n ./tmp/split,0.039391424556999996,0.0004924388242401976,0.039486601700000006,0.02728798899999996,0.012009987999999996,0.03876594120000001,0.04506744420000001,data/benchmark/100_2700_100.csv -bin/csv-split -l 100 data/benchmark/6200_100_100.csv -n ./tmp/split,0.19372350156400023,0.01778540640660544,0.1972175492,0.09145761299999985,0.0577773019999999,0.1463401232,0.27825553020000005,data/benchmark/6200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_600.csv -n ./tmp/split,0.008207220888999986,0.0004893364073611214,0.0080330867,0.005435482999999997,0.002742786700000002,0.0078840902,0.0120747512,data/benchmark/100_100_600.csv -bin/csv-split -l 100 data/benchmark/8600_100_100.csv -n ./tmp/split,0.2730396363029997,0.028837983529239122,0.2705396017,0.12662434700000014,0.07969673700000005,0.20197666520000002,0.5502264632,data/benchmark/8600_100_100.csv -bin/csv-split -l 100 data/benchmark/100_9900_100.csv -n ./tmp/split,0.14239405003700004,0.0015567035429984877,0.1416637287,0.09944436600000005,0.042677834999999935,0.1407445842,0.15253838120000002,data/benchmark/100_9900_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3600.csv -n ./tmp/split,0.04480602509099995,0.0007423016026017698,0.0444675967,0.029744651000000018,0.014955834999999995,0.0441708062,0.05124601520000001,data/benchmark/100_100_3600.csv -bin/csv-split -l 100 data/benchmark/6700_100_100.csv -n ./tmp/split,0.2115237740729997,0.020773765940280912,0.2138820407,0.0982941049999998,0.06267989599999998,0.1578883762,0.3322156512,data/benchmark/6700_100_100.csv -bin/csv-split -l 100 data/benchmark/4100_100_100.csv -n ./tmp/split,0.12604818366000006,0.017827148299655586,0.12595098370000002,0.059920435000000036,0.038662681999999976,0.0964499352,0.2358811882,data/benchmark/4100_100_100.csv -bin/csv-split -l 100 data/benchmark/700_100_100.csv -n ./tmp/split,0.016785979624999985,0.0008813964047242846,0.0167220352,0.010191854999999994,0.006489831000000001,0.0160259162,0.03295969520000001,data/benchmark/700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9000.csv -n ./tmp/split,0.11030359261599992,0.0013918409992361826,0.1094899312,0.07340006999999987,0.036686432000000005,0.10873986520000001,0.11474290720000001,data/benchmark/100_100_9000.csv -bin/csv-split -l 100 data/benchmark/100_100_900.csv -n ./tmp/split,0.012444631431999992,0.0006812824085659544,0.012124489200000001,0.008106480999999994,0.0042897747999999965,0.0117456272,0.017363443200000002,data/benchmark/100_100_900.csv -bin/csv-split -l 100 data/benchmark/100_100_5200.csv -n ./tmp/split,0.064519136094,0.001229964101316091,0.0646573202,0.04299532400000004,0.02136281499999999,0.0632323742,0.0734426832,data/benchmark/100_100_5200.csv -bin/csv-split -l 100 data/benchmark/100_100_9400.csv -n ./tmp/split,0.11496467912500011,0.00185065102102959,0.1149591827,0.07682664700000003,0.037905246999999934,0.1126293232,0.1245422092,data/benchmark/100_100_9400.csv -bin/csv-split -l 100 data/benchmark/100_100_2300.csv -n ./tmp/split,0.029115339165999992,0.0006988710356605095,0.029144870700000002,0.019216376999999982,0.009810435,0.0283881172,0.035662348200000006,data/benchmark/100_100_2300.csv -bin/csv-split -l 100 data/benchmark/5200_100_100.csv -n ./tmp/split,0.1615955156439999,0.016118893174332218,0.15992647670000001,0.07627660200000001,0.047820069999999985,0.1221998472,0.2897479592,data/benchmark/5200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_1200_100.csv -n ./tmp/split,0.018063055103000027,0.0006490937926284602,0.0179214122,0.012366458000000006,0.005646431699999995,0.017594710200000002,0.0239304252,data/benchmark/100_1200_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5000.csv -n ./tmp/split,0.06117799943399988,0.0008150537798701066,0.06072971820000001,0.041049425999999986,0.019994647000000004,0.060572011200000005,0.0674693962,data/benchmark/100_100_5000.csv -bin/csv-split -l 100 data/benchmark/200_100_100.csv -n ./tmp/split,0.004207799008999998,0.00035862231722912275,0.0040698277,0.002610338045000003,0.0016129266999999965,0.003987220200000001,0.006752612200000001,data/benchmark/200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5900.csv -n ./tmp/split,0.07178609766100004,0.0010926169036477315,0.0712822682,0.04799093900000001,0.02364233599999997,0.0708445632,0.0803413162,data/benchmark/100_100_5900.csv -bin/csv-split -l 100 data/benchmark/100_100_6700.csv -n ./tmp/split,0.08166651332599997,0.0011726836264763219,0.0810054102,0.0546671599999999,0.026828694000000004,0.0804830732,0.0866847742,data/benchmark/100_100_6700.csv -bin/csv-split -l 100 data/benchmark/100_8400_100.csv -n ./tmp/split,0.12024790750399986,0.0015566663619720337,0.1193130922,0.08360770300000017,0.03640268800000003,0.1189885752,0.1296951622,data/benchmark/100_8400_100.csv -bin/csv-split -l 100 data/benchmark/100_9500_100.csv -n ./tmp/split,0.13621055985000002,0.0013668123696648669,0.1355320462,0.09549319999999992,0.040465842999999974,0.1348844952,0.1448939242,data/benchmark/100_9500_100.csv -bin/csv-split -l 100 data/benchmark/4600_100_100.csv -n ./tmp/split,0.14151143864000015,0.015148244332915981,0.1380213452,0.067695912,0.04335648800000003,0.1087256692,0.22179862220000002,data/benchmark/4600_100_100.csv -bin/csv-split -l 100 data/benchmark/8100_100_100.csv -n ./tmp/split,0.2564172131389998,0.024731431111995956,0.25491165120000003,0.1195095360000001,0.07674414499999996,0.1918899162,0.3951195552,data/benchmark/8100_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1600.csv -n ./tmp/split,0.020860668164999995,0.0007594869838575717,0.020512808700000003,0.013657176000000035,0.0071394469999999976,0.0201183602,0.027274902200000003,data/benchmark/100_100_1600.csv -bin/csv-split -l 100 data/benchmark/100_3000_100.csv -n ./tmp/split,0.04367347427999999,0.0010408330929394867,0.043130104700000005,0.030522457999999992,0.013031024000000006,0.042929117200000005,0.05259698420000001,data/benchmark/100_3000_100.csv -bin/csv-split -l 100 data/benchmark/300_100_100.csv -n ./tmp/split,0.006850433934999996,0.0004797616529763957,0.0067067697,0.004280603000000008,0.002546042199999998,0.0063643212,0.0094136562,data/benchmark/300_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9700.csv -n ./tmp/split,0.11929856932299993,0.0013334420204812623,0.1184651977,0.07932427599999997,0.03975126199999993,0.1176463022,0.12242576420000001,data/benchmark/100_100_9700.csv -bin/csv-split -l 100 data/benchmark/100_100_2500.csv -n ./tmp/split,0.03154566575499996,0.0007262485433671964,0.03126256470000001,0.020941539999999967,0.010510262999999997,0.030908240200000003,0.0358213922,data/benchmark/100_100_2500.csv -bin/csv-split -l 100 data/benchmark/4000_100_100.csv -n ./tmp/split,0.12289423550199982,0.01511607047269697,0.1200165987,0.05887648200000002,0.037801735999999996,0.0951349752,0.27038140620000006,data/benchmark/4000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_1700_100.csv -n ./tmp/split,0.025559918124999942,0.0006795486107969506,0.025455379700000003,0.01764306800000002,0.007840668,0.0248462892,0.031213409200000004,data/benchmark/100_1700_100.csv -bin/csv-split -l 100 data/benchmark/6500_100_100.csv -n ./tmp/split,0.2046432307940002,0.01795822449972305,0.2020279627,0.09551220100000009,0.061632565000000014,0.1537566812,0.32011968120000006,data/benchmark/6500_100_100.csv -bin/csv-split -l 100 data/benchmark/1200_100_100.csv -n ./tmp/split,0.032632268133,0.010195874847386703,0.028572920700000004,0.017523650999999998,0.011249598999999994,0.0279538632,0.1080155722,data/benchmark/1200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3800.csv -n ./tmp/split,0.04733355406700002,0.0009098929070526655,0.046904235200000005,0.03133014300000002,0.01589229600000003,0.04646168020000001,0.05338375420000001,data/benchmark/100_100_3800.csv -bin/csv-split -l 100 data/benchmark/3700_100_100.csv -n ./tmp/split,0.11648556142299998,0.012589428477495317,0.1115793607,0.05435448099999996,0.035044349999999974,0.0882835922,0.19237408820000002,data/benchmark/3700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3700.csv -n ./tmp/split,0.04612280175800006,0.0007440562355860217,0.0457986207,0.030527682999999996,0.015491791999999997,0.045400662200000004,0.05296447420000001,data/benchmark/100_100_3700.csv -bin/csv-split -l 100 data/benchmark/100_100_7000.csv -n ./tmp/split,0.08592015210899993,0.0010952197468453034,0.0852908507,0.05709179299999997,0.02865332000000003,0.0846389712,0.0904486752,data/benchmark/100_100_7000.csv -bin/csv-split -l 100 data/benchmark/100_4000_100.csv -n ./tmp/split,0.05834842989000009,0.0007378250361729817,0.058031375200000006,0.04015248200000005,0.01806302599999998,0.05760712920000001,0.0664657772,data/benchmark/100_4000_100.csv -bin/csv-split -l 100 data/benchmark/100_1100_100.csv -n ./tmp/split,0.016956233708,0.0007558693677974571,0.0166032422,0.011666879000000012,0.005235471000000005,0.0162641032,0.021974839200000002,data/benchmark/100_1100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6500.csv -n ./tmp/split,0.08012866925700005,0.0010546534776940226,0.0794866937,0.05312043500000001,0.02685205000000001,0.0792124712,0.0878289632,data/benchmark/100_100_6500.csv -bin/csv-split -l 100 data/benchmark/100_8100_100.csv -n ./tmp/split,0.11715807192199991,0.0013355635226948797,0.1166471237,0.08138103699999988,0.03554586799999999,0.1157041442,0.1268572272,data/benchmark/100_8100_100.csv -bin/csv-split -l 100 data/benchmark/3000_100_100.csv -n ./tmp/split,0.09060375710500004,0.014043566195317245,0.09213161219999999,0.04453345799999996,0.028209717000000026,0.0707773982,0.1673067882,data/benchmark/3000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5300.csv -n ./tmp/split,0.06525930881800002,0.000779406116712097,0.0649550292,0.0433682709999999,0.021757676000000024,0.0643955742,0.0697809692,data/benchmark/100_100_5300.csv -bin/csv-split -l 100 data/benchmark/1400_100_100.csv -n ./tmp/split,0.037667284556999955,0.008540778313343607,0.0335783392,0.020596957000000037,0.01312023999999998,0.03284806020000001,0.0827250972,data/benchmark/1400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_5700.csv -n ./tmp/split,0.069530229721,0.0011055804280235906,0.0688951112,0.04651501499999996,0.02286782700000002,0.0685241922,0.0747013612,data/benchmark/100_100_5700.csv -bin/csv-split -l 100 data/benchmark/100_4300_100.csv -n ./tmp/split,0.062364867448000086,0.0008293550737445527,0.0619448297,0.043372983000000025,0.01886096399999998,0.061530496200000014,0.0680216002,data/benchmark/100_4300_100.csv -bin/csv-split -l 100 data/benchmark/100_8900_100.csv -n ./tmp/split,0.12825836241799995,0.001247822947191139,0.1275846612,0.08944963399999997,0.038580486000000025,0.1268533522,0.1334766342,data/benchmark/100_8900_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3100.csv -n ./tmp/split,0.03862902768200005,0.0005764859162553569,0.038843843200000006,0.025493210999999974,0.013048331000000005,0.037903192200000005,0.040664440200000006,data/benchmark/100_100_3100.csv -bin/csv-split -l 100 data/benchmark/100_100_8700.csv -n ./tmp/split,0.10631054574700008,0.0012732215535096153,0.1056425277,0.07110984500000006,0.03499339400000002,0.10500760020000001,0.11363103520000001,data/benchmark/100_100_8700.csv -bin/csv-split -l 100 data/benchmark/100_4800_100.csv -n ./tmp/split,0.06929831529999995,0.0007819096394221077,0.0688813992,0.04829081200000007,0.020859479000000018,0.0685268192,0.0734171302,data/benchmark/100_4800_100.csv -bin/csv-split -l 100 data/benchmark/5500_100_100.csv -n ./tmp/split,0.17264797816099994,0.017702023819798924,0.17129661870000001,0.08118119800000001,0.0519382800000001,0.1299435962,0.27939363520000005,data/benchmark/5500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_7800_100.csv -n ./tmp/split,0.11239964612399983,0.0011797833066542764,0.1116864712,0.07815495599999994,0.034036525000000005,0.1112580382,0.1193160202,data/benchmark/100_7800_100.csv -bin/csv-split -l 100 data/benchmark/6400_100_100.csv -n ./tmp/split,0.20222694476699973,0.019100304396143332,0.1975565642,0.09411363899999996,0.060811336000000014,0.1512992722,0.33867807020000007,data/benchmark/6400_100_100.csv -bin/csv-split -l 100 data/benchmark/100_6900_100.csv -n ./tmp/split,0.09992437955100003,0.0011918022276336529,0.0993452367,0.06945303100000005,0.030268822999999993,0.09866916220000001,0.1061860012,data/benchmark/100_6900_100.csv -bin/csv-split -l 100 data/benchmark/100_100_9300.csv -n ./tmp/split,0.11414531287199987,0.0014776701850242001,0.1133236937,0.07578688099999999,0.038140977999999964,0.1125195432,0.1211591962,data/benchmark/100_100_9300.csv -bin/csv-split -l 100 data/benchmark/100_100_1200.csv -n ./tmp/split,0.016175912132000005,0.0007746239496374428,0.0157487477,0.010604893999999998,0.005518789999999994,0.015424287200000001,0.021944854200000002,data/benchmark/100_100_1200.csv -bin/csv-split -l 100 data/benchmark/7900_100_100.csv -n ./tmp/split,0.2519569573210001,0.027435936367518184,0.25051239320000007,0.11640252599999996,0.07448151200000001,0.18720221720000002,0.4324027442000001,data/benchmark/7900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_6500_100.csv -n ./tmp/split,0.0934065836099999,0.0009929722012816575,0.0929773777,0.06525023200000007,0.027971955999999996,0.0923744412,0.0987832362,data/benchmark/100_6500_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6400.csv -n ./tmp/split,0.07843365096699992,0.0010025162997227173,0.07800745519999999,0.05260101199999994,0.025674136000000004,0.0774847412,0.08753362320000001,data/benchmark/100_100_6400.csv -bin/csv-split -l 100 data/benchmark/5000_100_100.csv -n ./tmp/split,0.1549852251760002,0.016286678385700994,0.1534749272,0.0735210159999999,0.046308489000000015,0.1178262912,0.2368879842,data/benchmark/5000_100_100.csv -bin/csv-split -l 100 data/benchmark/4900_100_100.csv -n ./tmp/split,0.15453647982299998,0.01761264314774335,0.15125146420000002,0.0720928640000001,0.045424710999999944,0.1152301782,0.3259712732,data/benchmark/4900_100_100.csv -bin/csv-split -l 100 data/benchmark/100_3900_100.csv -n ./tmp/split,0.056792973645,0.0009748573566078763,0.05700393220000001,0.039700176999999975,0.016962437999999986,0.055836212200000006,0.0657676742,data/benchmark/100_3900_100.csv -bin/csv-split -l 100 data/benchmark/2800_100_100.csv -n ./tmp/split,0.08425943698100004,0.016883617338108902,0.0888166682,0.041149808999999996,0.026108872000000026,0.0659689242,0.1483507682,data/benchmark/2800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_900_100.csv -n ./tmp/split,0.013941524143000015,0.0005686178245267568,0.0136578597,0.009679097999999994,0.004220507599999996,0.0133216062,0.0172323742,data/benchmark/100_900_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6600.csv -n ./tmp/split,0.0801486069390002,0.0011656318627163598,0.0794211272,0.053736632000000055,0.026251035999999995,0.0788888842,0.0869443862,data/benchmark/100_100_6600.csv -bin/csv-split -l 100 data/benchmark/3500_100_100.csv -n ./tmp/split,0.10795017201799995,0.01694728986783356,0.1136317097,0.05128132900000008,0.032832453999999976,0.0826669792,0.1785604802,data/benchmark/3500_100_100.csv -bin/csv-split -l 100 data/benchmark/400_100_100.csv -n ./tmp/split,0.009998111859999994,0.003417490251042996,0.0095701292,0.005861484000000005,0.0036163265000000023,0.008781456200000001,0.05502037120000001,data/benchmark/400_100_100.csv -bin/csv-split -l 100 data/benchmark/9000_100_100.csv -n ./tmp/split,0.2901449831279998,0.03243512946375374,0.28759477270000006,0.132845338,0.08438014900000003,0.2117848712,0.5506836602,data/benchmark/9000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_6900.csv -n ./tmp/split,0.08412993009800002,0.001311046581055567,0.0833947877,0.05618574900000001,0.027772126000000015,0.0827622712,0.0922101442,data/benchmark/100_100_6900.csv -bin/csv-split -l 100 data/benchmark/100_100_1400.csv -n ./tmp/split,0.018510828952000007,0.0007560141270449238,0.0182197267,0.012185326999999963,0.006269034700000005,0.0176546962,0.0238448302,data/benchmark/100_100_1400.csv -bin/csv-split -l 100 data/benchmark/2400_100_100.csv -n ./tmp/split,0.07241947231900003,0.017276877481506487,0.0769209377,0.035265427999999974,0.022734023999999985,0.05637032620000001,0.23044496120000002,data/benchmark/2400_100_100.csv -bin/csv-split -l 100 data/benchmark/6800_100_100.csv -n ./tmp/split,0.2193715074280001,0.032457088136369425,0.21487915820000003,0.099929382,0.06354707399999994,0.1600699512,0.48729153320000007,data/benchmark/6800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_4900_100.csv -n ./tmp/split,0.07109979222099999,0.000951599713941748,0.0706180537,0.04954750499999997,0.02140088399999998,0.0700935082,0.0775781682,data/benchmark/100_4900_100.csv -bin/csv-split -l 100 data/benchmark/1100_100_100.csv -n ./tmp/split,0.02791996783499998,0.003570025018969353,0.0272703632,0.016421848,0.010296463000000007,0.025535254200000003,0.0633112312,data/benchmark/1100_100_100.csv -bin/csv-split -l 100 data/benchmark/1900_100_100.csv -n ./tmp/split,0.056794042673000034,0.018286961399240808,0.04567547920000001,0.027713021999999983,0.017769986999999998,0.0445346542,0.14328625520000002,data/benchmark/1900_100_100.csv -bin/csv-split -l 100 data/benchmark/2500_100_100.csv -n ./tmp/split,0.07543155458299995,0.021233868958779614,0.060758770200000006,0.03654308599999996,0.02347173999999998,0.058763425200000004,0.2195086312,data/benchmark/2500_100_100.csv -bin/csv-split -l 100 data/benchmark/100_9200_100.csv -n ./tmp/split,0.132309863864,0.0015812345036822855,0.1317644732,0.09220424699999988,0.03985646899999997,0.1304924972,0.1381234722,data/benchmark/100_9200_100.csv -bin/csv-split -l 100 data/benchmark/100_9800_100.csv -n ./tmp/split,0.140395218695,0.0013153079646823472,0.13970237470000002,0.09832874800000001,0.04181426400000004,0.1391077082,0.1460846032,data/benchmark/100_9800_100.csv -bin/csv-split -l 100 data/benchmark/100_100_3200.csv -n ./tmp/split,0.03955641528900001,0.0006616008825179678,0.03918126370000001,0.02636418800000001,0.013096879000000014,0.0389950042,0.045575767200000006,data/benchmark/100_100_3200.csv -bin/csv-split -l 100 data/benchmark/100_400_100.csv -n ./tmp/split,0.006438608357000003,0.0005540986721265399,0.0062141607000000005,0.004408565000000007,0.0020346835999999996,0.0059896381999999995,0.0096288962,data/benchmark/100_400_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2600.csv -n ./tmp/split,0.03251340294300006,0.0008395540503374027,0.0325308762,0.021796176999999976,0.010624750999999974,0.031816055200000005,0.040990704200000005,data/benchmark/100_100_2600.csv -bin/csv-split -l 100 data/benchmark/100_6000_100.csv -n ./tmp/split,0.086064201504,0.000984223994017818,0.08558489920000001,0.05966772500000004,0.026224883000000025,0.0852503762,0.0927345742,data/benchmark/100_6000_100.csv -bin/csv-split -l 100 data/benchmark/100_100_2200.csv -n ./tmp/split,0.027752477384000024,0.0008177244129018508,0.0276164442,0.018478759000000004,0.009193429999999995,0.0270708832,0.035429619200000005,data/benchmark/100_100_2200.csv -bin/csv-split -l 100 data/benchmark/100_2100_100.csv -n ./tmp/split,0.030987548181999988,0.0009875955826750096,0.030486467700000002,0.021499030000000006,0.009392300999999994,0.0303868772,0.03942131420000001,data/benchmark/100_2100_100.csv -bin/csv-split -l 100 data/benchmark/8800_100_100.csv -n ./tmp/split,0.285616913173,0.03438855280363721,0.28407747820000007,0.12980110500000006,0.08336419099999988,0.20713538920000002,0.6377714972,data/benchmark/8800_100_100.csv -bin/csv-split -l 100 data/benchmark/100_6100_100.csv -n ./tmp/split,0.08816487602799994,0.0012017661725096476,0.0874589652,0.06158129700000003,0.026406362999999988,0.08712334320000001,0.0977143692,data/benchmark/100_6100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_7300.csv -n ./tmp/split,0.08967004023600005,0.0014282927212840304,0.0887886852,0.060003194000000024,0.02948084800000001,0.0884091592,0.0990407142,data/benchmark/100_100_7300.csv -bin/csv-split -l 100 data/benchmark/2700_100_100.csv -n ./tmp/split,0.08215477820300003,0.013840587646489202,0.0842800222,0.03971219300000001,0.025811959,0.0641171712,0.1984462102,data/benchmark/2700_100_100.csv -bin/csv-split -l 100 data/benchmark/100_4400_100.csv -n ./tmp/split,0.06420803047200005,0.0008649008378088655,0.0637712242,0.044188582000000004,0.019880967000000017,0.0635412542,0.0731036162,data/benchmark/100_4400_100.csv -bin/csv-split -l 100 data/benchmark/100_100_8300.csv -n ./tmp/split,0.1028409825149999,0.0011899413734591242,0.1022592502,0.06813175900000003,0.03451919799999999,0.1016092022,0.1079379532,data/benchmark/100_100_8300.csv -bin/csv-split -l 100 data/benchmark/6000_100_100.csv -n ./tmp/split,0.19762826085300012,0.024832327837356356,0.1903042572,0.088303561,0.05685600199999991,0.1419801352,0.41527156120000003,data/benchmark/6000_100_100.csv -bin/csv-split -l 100 data/benchmark/100_6300_100.csv -n ./tmp/split,0.09177104456399994,0.0011006426208014614,0.09121639370000001,0.06351565799999996,0.028059377,0.09076343020000001,0.0989997902,data/benchmark/100_6300_100.csv -bin/csv-split -l 100 data/benchmark/100_1300_100.csv -n ./tmp/split,0.02010740070000002,0.0007605865273557117,0.0198319342,0.013778450999999997,0.006268363000000001,0.0193092962,0.0248631662,data/benchmark/100_1300_100.csv -bin/csv-split -l 100 data/benchmark/8200_100_100.csv -n ./tmp/split,0.27586169679699996,0.03782731402174413,0.27345326020000005,0.1208782489999999,0.077836313,0.1947096502,0.5518042692,data/benchmark/8200_100_100.csv -bin/csv-split -l 100 data/benchmark/100_100_1900.csv -n ./tmp/split,0.024946891465000013,0.0006936754381506672,0.0247815132,0.016289211,0.008585313000000006,0.0240360142,0.028826687200000003,data/benchmark/100_100_1900.csv +bin/csv-split -l 100 data/benchmark/2300_100_100.csv -n ./temp/split,0.15673962488699994,0.06563031467361495,0.1592951522,0.03475758999999998,0.022442259000000044,0.054609321200000005,0.6946567692,data/benchmark/2300_100_100.csv +bin/csv-split -l 100 data/benchmark/2000_100_100.csv -n ./temp/split,0.11892247960300004,0.052689036127990654,0.1444139772,0.029938720000000026,0.019387269999999988,0.047558949200000006,0.21556943620000002,data/benchmark/2000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9900.csv -n ./temp/split,0.12365857614100029,0.0013850023196402413,0.12287329720000001,0.08061733600000003,0.042796925000000006,0.1224851012,0.1306130832,data/benchmark/100_100_9900.csv +bin/csv-split -l 100 data/benchmark/100_5400_100.csv -n ./temp/split,0.07845312591900003,0.0010145450654237965,0.0778320562,0.05417429799999998,0.024112489999999993,0.0774817402,0.0838781312,data/benchmark/100_5400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4100.csv -n ./temp/split,0.05132064042000002,0.0006962512785539658,0.051091609700000006,0.03383529299999999,0.017370385999999984,0.050536454200000004,0.055079343200000005,data/benchmark/100_100_4100.csv +bin/csv-split -l 100 data/benchmark/3300_100_100.csv -n ./temp/split,0.12466649768699994,0.043238690814107895,0.11554888270000001,0.04856440000000003,0.031214653999999988,0.0780892062,0.27622360320000006,data/benchmark/3300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7600.csv -n ./temp/split,0.09337980060900011,0.0010586883573754494,0.0929890352,0.06220767299999999,0.030944407000000004,0.0921503122,0.10320478720000001,data/benchmark/100_100_7600.csv +bin/csv-split -l 100 data/benchmark/6100_100_100.csv -n ./temp/split,0.19210833416800005,0.023394676548268597,0.1855978362,0.08983894000000009,0.056866660999999964,0.1438019032,0.4312173872,data/benchmark/6100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8000_100.csv -n ./temp/split,0.11518928292900008,0.0011042104505544334,0.1147507242,0.07979591199999993,0.03513753600000002,0.1139643362,0.12255250720000001,data/benchmark/100_8000_100.csv +bin/csv-split -l 100 data/benchmark/3400_100_100.csv -n ./temp/split,0.10423960816000012,0.011482623360758679,0.1031258832,0.05026053899999998,0.03224892500000001,0.0807512622,0.1838679342,data/benchmark/3400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_500_100.csv -n ./temp/split,0.008011090406999998,0.0005130318407500726,0.0077486887,0.0055361590000000006,0.0024470809999999994,0.0075323692,0.011489196200000001,data/benchmark/100_500_100.csv +bin/csv-split -l 100 data/benchmark/2900_100_100.csv -n ./temp/split,0.08724159968,0.018389524958910393,0.0753792012,0.042705877000000024,0.027162093999999967,0.0681677332,0.1881537242,data/benchmark/2900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5100.csv -n ./temp/split,0.062926203295,0.0010689333534906343,0.06245472170000001,0.04188491699999999,0.02089059099999998,0.062069307200000014,0.0696530412,data/benchmark/100_100_5100.csv +bin/csv-split -l 100 data/benchmark/7200_100_100.csv -n ./temp/split,0.2267174676929999,0.021818853317167874,0.23540311070000003,0.10563168399999988,0.06651705300000002,0.1690123522,0.35728054620000005,data/benchmark/7200_100_100.csv +bin/csv-split -l 100 data/benchmark/9200_100_100.csv -n ./temp/split,0.29002736570100013,0.02300401314507374,0.29089518570000006,0.1346744419999999,0.08497683599999996,0.2150359142,0.43846736720000007,data/benchmark/9200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4500_100.csv -n ./temp/split,0.06497085027300004,0.0009423131546945272,0.06441499519999999,0.045417112000000044,0.019420600999999996,0.0641110312,0.0715783882,data/benchmark/100_4500_100.csv +bin/csv-split -l 100 data/benchmark/100_7000_100.csv -n ./temp/split,0.10017236440400008,0.0010615298249541,0.0996023067,0.07032524199999995,0.029657160999999967,0.0990358852,0.1064058112,data/benchmark/100_7000_100.csv +bin/csv-split -l 100 data/benchmark/100_3400_100.csv -n ./temp/split,0.049314239206000005,0.0007827053175687814,0.04892798370000001,0.03421552899999996,0.014983288000000016,0.048591157200000006,0.05664059920000001,data/benchmark/100_3400_100.csv +bin/csv-split -l 100 data/benchmark/100_2200_100.csv -n ./temp/split,0.032306680215000015,0.0006042760012166059,0.032026600200000005,0.022410642999999994,0.00981198799999999,0.031781278200000006,0.04063094020000001,data/benchmark/100_2200_100.csv +bin/csv-split -l 100 data/benchmark/100_5800_100.csv -n ./temp/split,0.08337861680099996,0.0009878752960289265,0.0828628867,0.058332296999999964,0.024880129999999983,0.0822277052,0.0895222512,data/benchmark/100_5800_100.csv +bin/csv-split -l 100 data/benchmark/100_7300_100.csv -n ./temp/split,0.10459706479699991,0.001166114184940907,0.1039457297,0.07266828299999993,0.03173224500000002,0.1032039922,0.10813837920000001,data/benchmark/100_7300_100.csv +bin/csv-split -l 100 data/benchmark/5100_100_100.csv -n ./temp/split,0.1574839264330001,0.013171742456169746,0.1573815092,0.074990894,0.047165546000000017,0.12021797320000001,0.2042939252,data/benchmark/5100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2400.csv -n ./temp/split,0.030141755742000013,0.0007504017542015181,0.0300749232,0.020156119999999993,0.00989299200000001,0.029525986200000003,0.03810979020000001,data/benchmark/100_100_2400.csv +bin/csv-split -l 100 data/benchmark/100_3800_100.csv -n ./temp/split,0.054727766702999885,0.0009055944035779221,0.054191408700000006,0.03837902499999998,0.016227689000000003,0.054047056200000006,0.0613016122,data/benchmark/100_3800_100.csv +bin/csv-split -l 100 data/benchmark/100_3700_100.csv -n ./temp/split,0.05350434278900007,0.0006690435647482104,0.053743875200000006,0.03750592799999999,0.01588013400000001,0.0525964022,0.06054098620000001,data/benchmark/100_3700_100.csv +bin/csv-split -l 100 data/benchmark/100_5600_100.csv -n ./temp/split,0.080411203127,0.0008967495516655681,0.0799360857,0.05571755200000004,0.024529796000000006,0.0794064662,0.0862030182,data/benchmark/100_5600_100.csv +bin/csv-split -l 100 data/benchmark/3200_100_100.csv -n ./temp/split,0.097275807278,0.015573966198806938,0.0980403797,0.047306994,0.030104294000000018,0.0756152122,0.1829002632,data/benchmark/3200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2500_100.csv -n ./temp/split,0.03709036585600002,0.0008539138491186685,0.0367592367,0.025647412,0.011336966999999991,0.0363657932,0.044197591200000004,data/benchmark/100_2500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8000.csv -n ./temp/split,0.09739277742000012,0.0013367766016210594,0.0966521742,0.06499638700000007,0.03220705299999997,0.09614421620000001,0.1046379312,data/benchmark/100_100_8000.csv +bin/csv-split -l 100 data/benchmark/100_100_4900.csv -n ./temp/split,0.06093105965299998,0.0010346135545966277,0.06071844220000001,0.040477722000000015,0.02031471599999999,0.05995646820000001,0.0686646882,data/benchmark/100_100_4900.csv +bin/csv-split -l 100 data/benchmark/100_6800_100.csv -n ./temp/split,0.09709606008000006,0.0010744461075791628,0.0964264352,0.06775273699999997,0.02914938999999999,0.0961949472,0.1037242322,data/benchmark/100_6800_100.csv +bin/csv-split -l 100 data/benchmark/600_100_100.csv -n ./temp/split,0.014364034821000002,0.0005757498874666788,0.014420215200000001,0.008708476999999994,0.005598491000000004,0.013593825200000001,0.0191644162,data/benchmark/600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9600_100.csv -n ./temp/split,0.13715729869599996,0.001380222986425655,0.1363019117,0.09636908399999997,0.04053235999999996,0.1358485582,0.1420997022,data/benchmark/100_9600_100.csv +bin/csv-split -l 100 data/benchmark/800_100_100.csv -n ./temp/split,0.019343241011000014,0.00231489882787192,0.019003368700000002,0.011704139000000014,0.007337091000000005,0.0182973182,0.05041343620000001,data/benchmark/800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4300.csv -n ./temp/split,0.052678628857999996,0.0009106514494605627,0.05223428670000001,0.035262461999999994,0.017296645999999992,0.05180970520000001,0.060065998200000005,data/benchmark/100_100_4300.csv +bin/csv-split -l 100 data/benchmark/5300_100_100.csv -n ./temp/split,0.16502094334000003,0.016178837199139432,0.1628921057,0.07783653099999982,0.048890380999999934,0.1241816822,0.29729492920000006,data/benchmark/5300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5900_100.csv -n ./temp/split,0.08434831253399991,0.0013038916635820278,0.08359876420000001,0.05941153000000004,0.024754490999999986,0.0832454512,0.0938244492,data/benchmark/100_5900_100.csv +bin/csv-split -l 100 data/benchmark/100_2800_100.csv -n ./temp/split,0.04083455351700008,0.0007989923006693499,0.040877423200000006,0.028273836999999975,0.012462573999999988,0.040070738200000004,0.046631123200000006,data/benchmark/100_2800_100.csv +bin/csv-split -l 100 data/benchmark/100_3500_100.csv -n ./temp/split,0.050734715102000005,0.0008760159528025997,0.050831471200000006,0.035617038999999975,0.01500148199999999,0.049829716200000006,0.05728786720000001,data/benchmark/100_3500_100.csv +bin/csv-split -l 100 data/benchmark/3900_100_100.csv -n ./temp/split,0.11987781222499999,0.016178392447987557,0.1209803797,0.057198916999999995,0.03602227799999997,0.0915203722,0.26002796320000005,data/benchmark/3900_100_100.csv +bin/csv-split -l 100 data/benchmark/5400_100_100.csv -n ./temp/split,0.16746232850499967,0.013917352496992491,0.1687323987,0.07913655499999989,0.051221222000000025,0.1274771472,0.22285779220000002,data/benchmark/5400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5000_100.csv -n ./temp/split,0.07291522217599994,0.0012629901993253924,0.0727235762,0.05071878399999991,0.022041511999999996,0.0716805082,0.0820203332,data/benchmark/100_5000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2000.csv -n ./temp/split,0.025493954878999983,0.0008193330011526145,0.0253612317,0.016886712999999998,0.008532657999999995,0.0246536212,0.032407296200000005,data/benchmark/100_100_2000.csv +bin/csv-split -l 100 data/benchmark/100_600_100.csv -n ./temp/split,0.009712994917,0.0005954159153300818,0.0098540902,0.006600152999999996,0.003078141300000002,0.0089686882,0.0138459092,data/benchmark/100_600_100.csv +bin/csv-split -l 100 data/benchmark/4500_100_100.csv -n ./temp/split,0.13784672515599997,0.014130521230322733,0.1353061362,0.06616262999999999,0.042258967999999966,0.1061082712,0.2172038152,data/benchmark/4500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6300.csv -n ./temp/split,0.07692229380299999,0.0009969872361686363,0.0763056782,0.051416403000000034,0.025347347999999974,0.0759299452,0.0839198292,data/benchmark/100_100_6300.csv +bin/csv-split -l 100 data/benchmark/100_2400_100.csv -n ./temp/split,0.03544707855500004,0.0008398447357980851,0.03543829970000001,0.024167813999999944,0.011182183999999984,0.03467770020000001,0.043338118200000005,data/benchmark/100_2400_100.csv +bin/csv-split -l 100 data/benchmark/1600_100_100.csv -n ./temp/split,0.04403026646400003,0.009246873175827975,0.038667802700000004,0.023576650999999994,0.015040111000000009,0.0374706512,0.08526782520000001,data/benchmark/1600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7500.csv -n ./temp/split,0.09086332543099992,0.0010101267983073409,0.0902690142,0.06119115000000004,0.029501738999999985,0.0900306762,0.0989286212,data/benchmark/100_100_7500.csv +bin/csv-split -l 100 data/benchmark/100_3300_100.csv -n ./temp/split,0.04786730141399998,0.0008323233453594906,0.047461422200000006,0.03340946400000004,0.01434085499999997,0.04715023720000001,0.054970613200000004,data/benchmark/100_3300_100.csv +bin/csv-split -l 100 data/benchmark/100_9000_100.csv -n ./temp/split,0.12892521230300003,0.001523910979970144,0.1280480757,0.09035964199999995,0.03832131800000001,0.1264595992,0.1360476032,data/benchmark/100_9000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3900.csv -n ./temp/split,0.04839363584700001,0.0009446294539016177,0.04806613820000001,0.032485753000000055,0.015788912999999988,0.04751221320000001,0.05691699120000001,data/benchmark/100_100_3900.csv +bin/csv-split -l 100 data/benchmark/100_8800_100.csv -n ./temp/split,0.12651974798899976,0.0013901891101476805,0.1256373017,0.08830961500000008,0.037974171000000015,0.1251989892,0.1328640302,data/benchmark/100_8800_100.csv +bin/csv-split -l 100 data/benchmark/3800_100_100.csv -n ./temp/split,0.1165912234759999,0.011753833890817742,0.11349387420000001,0.05615357299999999,0.03573240399999999,0.0902900732,0.20293721720000002,data/benchmark/3800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_3100_100.csv -n ./temp/split,0.04509263553199995,0.0007421864753679443,0.04477751420000001,0.031459344999999986,0.013519642000000004,0.044414528200000004,0.05219423620000001,data/benchmark/100_3100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_800.csv -n ./temp/split,0.011179392277999979,0.0006329823915058287,0.0112748217,0.0075220479999999895,0.0036140299999999972,0.0102492082,0.0154584272,data/benchmark/100_100_800.csv +bin/csv-split -l 100 data/benchmark/100_7100_100.csv -n ./temp/split,0.10258079685099986,0.0012430136625951945,0.10187030020000001,0.07162004399999991,0.030768018000000015,0.1013664892,0.1102599942,data/benchmark/100_7100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_400.csv -n ./temp/split,0.005546341788000002,0.0003111812217926632,0.005425999200000001,0.0037140793500000046,0.0018573532999999994,0.0053113252,0.0078366372,data/benchmark/100_100_400.csv +bin/csv-split -l 100 data/benchmark/100_100_1100.csv -n ./temp/split,0.01454286423300001,0.0007432440061968355,0.014223490200000001,0.009552627000000008,0.004941596699999999,0.013949053200000002,0.019553286200000002,data/benchmark/100_100_1100.csv +bin/csv-split -l 100 data/benchmark/100_100_200.csv -n ./temp/split,0.003155828417999999,0.00039045024519554847,0.0029933252000000003,0.0021125330049999963,0.0010929110999999992,0.0027906962,0.005187239200000001,data/benchmark/100_100_200.csv +bin/csv-split -l 100 data/benchmark/100_5100_100.csv -n ./temp/split,0.07343990771900001,0.0009888267549475636,0.07296916719999999,0.05122646700000002,0.022054673999999993,0.0728177762,0.0818946822,data/benchmark/100_5100_100.csv +bin/csv-split -l 100 data/benchmark/1300_100_100.csv -n ./temp/split,0.034208535947999975,0.009641318942728435,0.030844916700000002,0.01884478100000001,0.012033149999999994,0.0302568142,0.0822530652,data/benchmark/1300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7800.csv -n ./temp/split,0.09537557022100007,0.0014902884754795268,0.0944918102,0.06362279300000002,0.03157190699999997,0.0938108342,0.1031152962,data/benchmark/100_100_7800.csv +bin/csv-split -l 100 data/benchmark/100_100_8400.csv -n ./temp/split,0.10233395980599996,0.0013233210341699509,0.10173512770000001,0.06890975900000001,0.03323311799999999,0.1011007672,0.1111330242,data/benchmark/100_100_8400.csv +bin/csv-split -l 100 data/benchmark/100_100_4200.csv -n ./temp/split,0.05160423407499999,0.0008905301705792244,0.05101151370000001,0.034394185999999966,0.017094148999999982,0.050824920200000005,0.058972870200000006,data/benchmark/100_100_4200.csv +bin/csv-split -l 100 data/benchmark/100_100_2700.csv -n ./temp/split,0.03366945504200003,0.0006463050766227159,0.033405161700000005,0.02257719099999998,0.010999874,0.03304041320000001,0.039280290200000005,data/benchmark/100_100_2700.csv +bin/csv-split -l 100 data/benchmark/100_100_8500.csv -n ./temp/split,0.10339372528500003,0.001112457996543139,0.1028371072,0.070077126,0.03311517000000003,0.1022167962,0.1087490882,data/benchmark/100_100_8500.csv +bin/csv-split -l 100 data/benchmark/5900_100_100.csv -n ./temp/split,0.18310412016200017,0.018362573334141694,0.17787200920000001,0.08655272600000015,0.05440616300000001,0.13896010620000002,0.30770475720000007,data/benchmark/5900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7700.csv -n ./temp/split,0.09355102925599994,0.001232201909163913,0.0929095942,0.063253731,0.030108356000000044,0.0922560972,0.10215274120000001,data/benchmark/100_100_7700.csv +bin/csv-split -l 100 data/benchmark/100_8700_100.csv -n ./temp/split,0.12447307891400025,0.0015997606932678266,0.1237300722,0.08768114999999997,0.036544915999999976,0.12276034820000001,0.1323837982,data/benchmark/100_8700_100.csv +bin/csv-split -l 100 data/benchmark/100_6600_100.csv -n ./temp/split,0.09401040121800001,0.001144838494262755,0.0933564687,0.06613484000000008,0.027695176999999977,0.0930395292,0.1021141322,data/benchmark/100_6600_100.csv +bin/csv-split -l 100 data/benchmark/7400_100_100.csv -n ./temp/split,0.23206716646500006,0.024007718090903966,0.23323716020000002,0.10862776500000022,0.06856971699999984,0.1734070482,0.38449127720000004,data/benchmark/7400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_100.csv -n ./temp/split,0.0017498898229999997,0.000291020842779181,0.0016307097000000004,0.0012337529350000026,0.0006625404000000007,0.0015732552,0.0034703692000000006,data/benchmark/100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9100.csv -n ./temp/split,0.11026470502200017,0.0015723451896052028,0.1094624297,0.07384738600000003,0.03620136399999998,0.1089694372,0.1208090812,data/benchmark/100_100_9100.csv +bin/csv-split -l 100 data/benchmark/7100_100_100.csv -n ./temp/split,0.22257359728299977,0.016194182727075762,0.2250279427,0.10437782399999994,0.06697834900000003,0.1682207652,0.2880300612,data/benchmark/7100_100_100.csv +bin/csv-split -l 100 data/benchmark/7000_100_100.csv -n ./temp/split,0.21968874100799995,0.01611613766207431,0.22121569070000002,0.10318938299999993,0.06631468199999997,0.1656033572,0.28081198420000003,data/benchmark/7000_100_100.csv +bin/csv-split -l 100 data/benchmark/9400_100_100.csv -n ./temp/split,0.29584642347799955,0.022692252157588532,0.3005149972000001,0.137873358,0.08909509600000018,0.2226244822,0.40245772920000006,data/benchmark/9400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2600_100.csv -n ./temp/split,0.03812524668999996,0.0004721995690340074,0.03788335270000001,0.026249988999999994,0.011785315999999995,0.03756565220000001,0.040312091200000004,data/benchmark/100_2600_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8600.csv -n ./temp/split,0.105564731706,0.0012493822815042835,0.1047057817,0.07017802300000002,0.035185172999999965,0.1043943472,0.1119735672,data/benchmark/100_100_8600.csv +bin/csv-split -l 100 data/benchmark/9700_100_100.csv -n ./temp/split,0.3055878153209997,0.02290009140696347,0.3092657622,0.14284232100000016,0.09145350700000004,0.2286660862,0.38395674820000003,data/benchmark/9700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1900_100.csv -n ./temp/split,0.027994627203999978,0.000501957998814566,0.0277727667,0.01930407200000001,0.008605944000000008,0.0275923892,0.032406386200000005,data/benchmark/100_1900_100.csv +bin/csv-split -l 100 data/benchmark/1000_100_100.csv -n ./temp/split,0.02478550597300001,0.003330808939101343,0.024091964700000003,0.014598390999999983,0.009222296000000003,0.0230862062,0.0679135482,data/benchmark/1000_100_100.csv +bin/csv-split -l 100 data/benchmark/6600_100_100.csv -n ./temp/split,0.2049001967859999,0.01737795196015836,0.20457798770000002,0.09733319300000005,0.06254762700000005,0.1562050112,0.25954184920000006,data/benchmark/6600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1500_100.csv -n ./temp/split,0.022563888763,0.0007199841190314668,0.022247968200000003,0.015303307000000006,0.007194323999999995,0.022036356200000003,0.0293292232,data/benchmark/100_1500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7200.csv -n ./temp/split,0.08806050802599999,0.0009371579666750489,0.0876302992,0.0588704210000001,0.029020050000000013,0.0870920022,0.0928136492,data/benchmark/100_100_7200.csv +bin/csv-split -l 100 data/benchmark/7300_100_100.csv -n ./temp/split,0.2293905325159999,0.01685907697118852,0.22864734920000002,0.10729089000000006,0.06861271100000002,0.1720101092,0.32766113320000007,data/benchmark/7300_100_100.csv +bin/csv-split -l 100 data/benchmark/10000_100_100.csv -n ./temp/split,0.3155837604570003,0.026219528725545036,0.31649597920000005,0.14714823600000007,0.093244177,0.2348241452,0.41182134020000005,data/benchmark/10000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5400.csv -n ./temp/split,0.06581908611500002,0.0009677261161479057,0.0653008792,0.04384149500000001,0.02184061500000003,0.0649970012,0.0733270002,data/benchmark/100_100_5400.csv +bin/csv-split -l 100 data/benchmark/100_100_7100.csv -n ./temp/split,0.08640621780400001,0.0014092480271091416,0.0855484997,0.057797731000000054,0.028439311000000002,0.08518047720000001,0.0961988102,data/benchmark/100_100_7100.csv +bin/csv-split -l 100 data/benchmark/100_7200_100.csv -n ./temp/split,0.10324852029499998,0.001331240753936966,0.10252576020000001,0.07230087600000003,0.030753733000000005,0.1021385792,0.11117637820000001,data/benchmark/100_7200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_300.csv -n ./temp/split,0.004398304225000002,0.00043271782007900546,0.0041685142,0.0029435217400000007,0.0014811466000000022,0.0040605472,0.0070873051999999995,data/benchmark/100_100_300.csv +bin/csv-split -l 100 data/benchmark/100_100_10000.csv -n ./temp/split,0.12256310359299995,0.001252379171811524,0.1220257072,0.0816765219999999,0.04066136600000006,0.1212675862,0.1306114732,data/benchmark/100_100_10000.csv +bin/csv-split -l 100 data/benchmark/100_3200_100.csv -n ./temp/split,0.046435234275000015,0.0006924707010144516,0.04608021170000001,0.032131501000000014,0.014198608999999994,0.04581836920000001,0.052613338200000005,data/benchmark/100_3200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2100.csv -n ./temp/split,0.026800059642000027,0.0009054259908502483,0.026624926200000003,0.017754496000000005,0.008961647999999984,0.0259715532,0.0345795762,data/benchmark/100_100_2100.csv +bin/csv-split -l 100 data/benchmark/100_100_4500.csv -n ./temp/split,0.05534869125300002,0.0009828292132848487,0.05471506520000001,0.03690199799999995,0.018329681999999962,0.05441089620000001,0.06151977720000001,data/benchmark/100_100_4500.csv +bin/csv-split -l 100 data/benchmark/100_200_100.csv -n ./temp/split,0.003375130219999994,0.00033803658470572866,0.0032666292,0.0023874663050000005,0.0010404713000000008,0.0030424492000000005,0.0054642762,data/benchmark/100_200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3400.csv -n ./temp/split,0.0419262493650001,0.0006897924713853988,0.04149997870000001,0.027990434000000015,0.013838298999999981,0.04126121120000001,0.04624583620000001,data/benchmark/100_100_3400.csv +bin/csv-split -l 100 data/benchmark/100_6200_100.csv -n ./temp/split,0.08914597258099995,0.0011192651776991064,0.08894693570000001,0.06263666399999998,0.026335344000000007,0.08783232220000001,0.0954459032,data/benchmark/100_6200_100.csv +bin/csv-split -l 100 data/benchmark/100_5700_100.csv -n ./temp/split,0.08197654658099995,0.0009949295960954684,0.0814177692,0.05745170900000002,0.02436276399999999,0.0808896782,0.0883373292,data/benchmark/100_5700_100.csv +bin/csv-split -l 100 data/benchmark/8500_100_100.csv -n ./temp/split,0.26585198028000034,0.021335422176899356,0.26650624720000005,0.12500000300000022,0.08033505699999995,0.2008807182,0.3553710312,data/benchmark/8500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5800.csv -n ./temp/split,0.07113555440200003,0.0010363194168380066,0.0704887692,0.04744318099999994,0.02354357499999999,0.0700226982,0.0769059302,data/benchmark/100_100_5800.csv +bin/csv-split -l 100 data/benchmark/100_100_5500.csv -n ./temp/split,0.06724304433499996,0.0011395468532780953,0.0664476147,0.045018519999999944,0.02207936600000005,0.0661508232,0.0742804142,data/benchmark/100_100_5500.csv +bin/csv-split -l 100 data/benchmark/7600_100_100.csv -n ./temp/split,0.23686791221099987,0.02061109558037238,0.2402693152,0.11162066299999998,0.0717268059999999,0.17969540320000002,0.33698271820000003,data/benchmark/7600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4700_100.csv -n ./temp/split,0.06860661784800004,0.0007538330736493099,0.0688231127,0.04746306200000008,0.02099868699999998,0.0675864122,0.0720449362,data/benchmark/100_4700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6100.csv -n ./temp/split,0.07489939055999999,0.0008428106368796313,0.07440109719999999,0.05012709800000004,0.024628884999999986,0.0739169682,0.0796045942,data/benchmark/100_100_6100.csv +bin/csv-split -l 100 data/benchmark/100_100_8100.csv -n ./temp/split,0.09889564337699995,0.0016115639046031974,0.09789690770000001,0.06598746200000002,0.03271120199999999,0.0975217712,0.1090493512,data/benchmark/100_100_8100.csv +bin/csv-split -l 100 data/benchmark/9600_100_100.csv -n ./temp/split,0.3020911885250005,0.023469032465124728,0.3037547342000001,0.14106018000000006,0.09048905800000004,0.22715066120000002,0.42020274720000006,data/benchmark/9600_100_100.csv +bin/csv-split -l 100 data/benchmark/9800_100_100.csv -n ./temp/split,0.30712338199099976,0.028553499513427408,0.31068985920000003,0.14414154999999987,0.09291214900000008,0.2310861442,0.5272085732,data/benchmark/9800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_700_100.csv -n ./temp/split,0.011225257341000001,0.0005893688642756188,0.0112521662,0.007731768999999996,0.003454838499999996,0.0104931072,0.0142534452,data/benchmark/100_700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3500.csv -n ./temp/split,0.04358249296900004,0.0007947930008223888,0.0433854392,0.028835162999999994,0.014637946999999988,0.0427427552,0.05117944020000001,data/benchmark/100_100_3500.csv +bin/csv-split -l 100 data/benchmark/100_5300_100.csv -n ./temp/split,0.07592889362999994,0.0012719835478071319,0.0752845132,0.05330851199999993,0.022450669999999975,0.0750277152,0.0855908732,data/benchmark/100_5300_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4800.csv -n ./temp/split,0.05891624001500004,0.0009481363283848897,0.05844044770000001,0.03923308800000002,0.01954923799999999,0.058253769200000007,0.0681653162,data/benchmark/100_100_4800.csv +bin/csv-split -l 100 data/benchmark/100_100_8200.csv -n ./temp/split,0.10036530130199985,0.00138770169954757,0.09953401170000001,0.06696436300000003,0.03319905799999998,0.0986474272,0.10458203320000001,data/benchmark/100_100_8200.csv +bin/csv-split -l 100 data/benchmark/100_9100_100.csv -n ./temp/split,0.13121716422400004,0.0014420690725273461,0.1303707772,0.09184458599999991,0.03913293599999998,0.1297055342,0.1360522602,data/benchmark/100_9100_100.csv +bin/csv-split -l 100 data/benchmark/900_100_100.csv -n ./temp/split,0.02197606530400001,0.002489321877638288,0.0217173277,0.013195960999999985,0.008514952000000001,0.0207859512,0.0763669312,data/benchmark/900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1300.csv -n ./temp/split,0.017150373857000013,0.0007556646233413318,0.0167879097,0.011392452000000016,0.005704076000000002,0.016398422200000002,0.023356465200000003,data/benchmark/100_100_1300.csv +bin/csv-split -l 100 data/benchmark/100_2000_100.csv -n ./temp/split,0.029397556859000015,0.0005976878855471132,0.029307223200000003,0.020309080999999986,0.009008384999999992,0.028795966200000002,0.03245652820000001,data/benchmark/100_2000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4600.csv -n ./temp/split,0.05614837020000012,0.0008549694845950653,0.05567936570000001,0.037418182999999966,0.01860984900000002,0.05550933420000001,0.0644387912,data/benchmark/100_100_4600.csv +bin/csv-split -l 100 data/benchmark/100_100_7900.csv -n ./temp/split,0.09588364569400017,0.0013513453645131825,0.0951794172,0.06444049100000003,0.03125551,0.0946449872,0.1019676132,data/benchmark/100_100_7900.csv +bin/csv-split -l 100 data/benchmark/100_2300_100.csv -n ./temp/split,0.033722784586000004,0.0007617776304043352,0.0333828907,0.023509312000000025,0.010117548999999998,0.0331757962,0.04178538920000001,data/benchmark/100_2300_100.csv +bin/csv-split -l 100 data/benchmark/4400_100_100.csv -n ./temp/split,0.13484259334900003,0.014461672018019567,0.1313054132,0.064968068,0.041592355999999976,0.1044708082,0.21746797720000002,data/benchmark/4400_100_100.csv +bin/csv-split -l 100 data/benchmark/1500_100_100.csv -n ./temp/split,0.04164506218199996,0.00913485909368606,0.0365751052,0.022156840999999997,0.014253342999999991,0.035406616200000005,0.0877036362,data/benchmark/1500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_500.csv -n ./temp/split,0.007023537676,0.0005600476946867734,0.0067481732,0.004577750869999999,0.0024266733000000013,0.0065394332,0.0104490522,data/benchmark/100_100_500.csv +bin/csv-split -l 100 data/benchmark/4300_100_100.csv -n ./temp/split,0.13142296732199998,0.013635664585807387,0.1295038087,0.063321293,0.040790530000000026,0.1016245052,0.2207358352,data/benchmark/4300_100_100.csv +bin/csv-split -l 100 data/benchmark/7800_100_100.csv -n ./temp/split,0.24433812134500013,0.02387339312071309,0.2476555937,0.11433914699999985,0.07391768999999992,0.18429323920000001,0.49624648220000006,data/benchmark/7800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_800_100.csv -n ./temp/split,0.012624362401999992,0.0006934154182940179,0.0122630132,0.00844311400000001,0.004128459100000002,0.011902473200000001,0.017566202200000002,data/benchmark/100_800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2900.csv -n ./temp/split,0.036262098443000025,0.0006709908169954891,0.036304439200000004,0.024031144000000056,0.012136555,0.03552708820000001,0.042982641200000005,data/benchmark/100_100_2900.csv +bin/csv-split -l 100 data/benchmark/7700_100_100.csv -n ./temp/split,0.24060446498299992,0.022271152132069875,0.24382269620000002,0.11284569799999995,0.07353116900000002,0.1826998152,0.44232122120000006,data/benchmark/7700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_5200_100.csv -n ./temp/split,0.07473576999999998,0.0011079557278096763,0.07409835719999999,0.051042318,0.023540905999999986,0.0736970192,0.0828733762,data/benchmark/100_5200_100.csv +bin/csv-split -l 100 data/benchmark/100_9400_100.csv -n ./temp/split,0.13496436358000002,0.001284990201295747,0.13431445670000003,0.0941108090000001,0.04061800999999998,0.1334844182,0.1386691222,data/benchmark/100_9400_100.csv +bin/csv-split -l 100 data/benchmark/2100_100_100.csv -n ./temp/split,0.060213275502,0.014784904291138719,0.05094358970000001,0.030917754000000026,0.019655960999999975,0.049194710200000005,0.1168279792,data/benchmark/2100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_2900_100.csv -n ./temp/split,0.042242705453999996,0.0006172471021161623,0.04200040570000001,0.029457833000000003,0.012686473999999996,0.04161040020000001,0.048168253200000004,data/benchmark/100_2900_100.csv +bin/csv-split -l 100 data/benchmark/100_4100_100.csv -n ./temp/split,0.059107799190999934,0.0006148152340976936,0.058849519200000006,0.04143650100000003,0.017544650000000002,0.05845729920000001,0.06210066820000001,data/benchmark/100_4100_100.csv +bin/csv-split -l 100 data/benchmark/100_1800_100.csv -n ./temp/split,0.02672001412300002,0.0008321403723329612,0.0265646187,0.018525912000000005,0.008107124999999996,0.026029133200000002,0.03339206520000001,data/benchmark/100_1800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8800.csv -n ./temp/split,0.10743314024799987,0.001313743888484065,0.1068754417,0.0720155829999999,0.035202815000000026,0.1062974552,0.1174787822,data/benchmark/100_100_8800.csv +bin/csv-split -l 100 data/benchmark/2600_100_100.csv -n ./temp/split,0.07722734911300012,0.018283372826801435,0.0631764292,0.03813249599999996,0.024202450000000025,0.0610704102,0.1308770742,data/benchmark/2600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4400.csv -n ./temp/split,0.054137151700999926,0.0010312568875479723,0.05453733070000001,0.036167831,0.017853529999999992,0.05305916320000001,0.0608945212,data/benchmark/100_100_4400.csv +bin/csv-split -l 100 data/benchmark/100_100_1500.csv -n ./temp/split,0.019724276305000028,0.0008141369075420714,0.019660359199999998,0.013000173999999996,0.006664122999999995,0.018817133200000002,0.0245983652,data/benchmark/100_100_1500.csv +bin/csv-split -l 100 data/benchmark/100_7600_100.csv -n ./temp/split,0.10900358157300008,0.0011738636042714235,0.10828899820000001,0.07575731200000003,0.033047884000000076,0.1074039722,0.11780057120000001,data/benchmark/100_7600_100.csv +bin/csv-split -l 100 data/benchmark/8000_100_100.csv -n ./temp/split,0.24986265381700035,0.02145142821011789,0.25122075070000005,0.11778692599999986,0.07527222,0.1886806172,0.36270992020000004,data/benchmark/8000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7400.csv -n ./temp/split,0.09046401155599992,0.0011892140496485677,0.08986285620000001,0.06069396899999995,0.029586789000000027,0.08928610320000001,0.0992681562,data/benchmark/100_100_7400.csv +bin/csv-split -l 100 data/benchmark/100_6400_100.csv -n ./temp/split,0.09200273826800004,0.001118176523669598,0.09148980970000001,0.06384757500000006,0.02796767500000002,0.09074139120000001,0.0962834342,data/benchmark/100_6400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1700.csv -n ./temp/split,0.022289275346000014,0.0008065323953943088,0.0221690387,0.014790163999999984,0.007426113999999992,0.021213157200000003,0.027043272200000003,data/benchmark/100_100_1700.csv +bin/csv-split -l 100 data/benchmark/100_7700_100.csv -n ./temp/split,0.11098392620500006,0.0011764081050797339,0.11033747020000001,0.07739755400000006,0.03338364699999999,0.1098706862,0.11620341120000001,data/benchmark/100_7700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1000.csv -n ./temp/split,0.013540770567000015,0.0007329677264180122,0.013113173200000001,0.008905304999999983,0.004586305000000003,0.0127731892,0.017447497200000002,data/benchmark/100_100_1000.csv +bin/csv-split -l 100 data/benchmark/9500_100_100.csv -n ./temp/split,0.2984516575480003,0.02283964668352094,0.30329208220000003,0.13982735799999998,0.08955531899999992,0.22412803020000002,0.41992416520000003,data/benchmark/9500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4700.csv -n ./temp/split,0.05860813368200011,0.0009610652869581021,0.05810805220000001,0.038310105999999955,0.020165601000000033,0.05770973720000001,0.0677335492,data/benchmark/100_100_4700.csv +bin/csv-split -l 100 data/benchmark/6900_100_100.csv -n ./temp/split,0.21655281582000013,0.01681166628902363,0.2207129122,0.1016444499999998,0.06541939600000009,0.16443863520000002,0.3184832222,data/benchmark/6900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6000.csv -n ./temp/split,0.07424384192399998,0.0010061451219847647,0.0737183397,0.04910914800000009,0.024982586999999976,0.0734158602,0.0831408372,data/benchmark/100_100_6000.csv +bin/csv-split -l 100 data/benchmark/100_100_2800.csv -n ./temp/split,0.035340754729999965,0.0005622317552792175,0.0350810037,0.023139357000000017,0.012115892999999987,0.034813242200000004,0.041920642200000004,data/benchmark/100_100_2800.csv +bin/csv-split -l 100 data/benchmark/100_100_9800.csv -n ./temp/split,0.1206386204740001,0.0013613595899043531,0.11987581620000001,0.08011581699999995,0.04030356499999996,0.1195401572,0.1364317672,data/benchmark/100_100_9800.csv +bin/csv-split -l 100 data/benchmark/100_8200_100.csv -n ./temp/split,0.118737916059,0.0013309668478397386,0.1180952527,0.08221997699999994,0.036295541000000014,0.11743783020000001,0.1261327752,data/benchmark/100_8200_100.csv +bin/csv-split -l 100 data/benchmark/100_9700_100.csv -n ./temp/split,0.1410141355070001,0.0013448360520465197,0.1404777182,0.097807768,0.04294266300000003,0.1395515352,0.1483819862,data/benchmark/100_9700_100.csv +bin/csv-split -l 100 data/benchmark/5800_100_100.csv -n ./temp/split,0.1807254252159998,0.019127645697699844,0.17638833869999998,0.08503644700000007,0.05401816300000003,0.13687979420000002,0.40061776720000003,data/benchmark/5800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6200.csv -n ./temp/split,0.07630843005900007,0.0011090878313251363,0.0757389027,0.050930035000000026,0.02520647099999997,0.0754631422,0.0849037762,data/benchmark/100_100_6200.csv +bin/csv-split -l 100 data/benchmark/100_5500_100.csv -n ./temp/split,0.07938408743099996,0.001141139773062014,0.07869900020000001,0.055542771000000046,0.023679178999999998,0.0783958022,0.0864254262,data/benchmark/100_5500_100.csv +bin/csv-split -l 100 data/benchmark/100_3600_100.csv -n ./temp/split,0.052461025208000014,0.0009271153016218013,0.052381279700000005,0.03661046699999997,0.015725645000000003,0.05154325320000001,0.05863012220000001,data/benchmark/100_3600_100.csv +bin/csv-split -l 100 data/benchmark/1800_100_100.csv -n ./temp/split,0.050289635087999975,0.013066126180146147,0.04327112570000001,0.02651248399999999,0.016707593999999996,0.042182124200000004,0.0944668572,data/benchmark/1800_100_100.csv +bin/csv-split -l 100 data/benchmark/1700_100_100.csv -n ./temp/split,0.04810441187900006,0.013942145837969093,0.04050732870000001,0.02492589300000003,0.015703909999999977,0.03972170120000001,0.0992693482,data/benchmark/1700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_700.csv -n ./temp/split,0.009792314144999995,0.0005939807839164902,0.009944032700000001,0.00650865900000001,0.003248188199999998,0.0089789362,0.0136799382,data/benchmark/100_100_700.csv +bin/csv-split -l 100 data/benchmark/100_4600_100.csv -n ./temp/split,0.06671342665899999,0.000989385193833825,0.0661299997,0.046412752999999925,0.02015636699999995,0.0659342502,0.0742505762,data/benchmark/100_4600_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9200.csv -n ./temp/split,0.11216540680099996,0.0013553359321077053,0.1115062677,0.07455614599999999,0.03741234499999999,0.1108630342,0.1163837682,data/benchmark/100_100_9200.csv +bin/csv-split -l 100 data/benchmark/8900_100_100.csv -n ./temp/split,0.27903798973500016,0.02318163491740463,0.2802355147000001,0.130670769,0.08244740500000004,0.2089676142,0.38305323020000004,data/benchmark/8900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8500_100.csv -n ./temp/split,0.12232564962000002,0.0013191075755926678,0.1216779922,0.08546726500000007,0.036623070999999986,0.12090664420000001,0.1293205362,data/benchmark/100_8500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8900.csv -n ./temp/split,0.10891529126700006,0.0014432400541912898,0.1079793372,0.07309681800000012,0.03561200000000002,0.1075112142,0.1156456622,data/benchmark/100_100_8900.csv +bin/csv-split -l 100 data/benchmark/100_1400_100.csv -n ./temp/split,0.021488605578000045,0.0007301152735668859,0.021345942700000002,0.014703050999999993,0.006715783700000011,0.0207069992,0.0253299222,data/benchmark/100_1400_100.csv +bin/csv-split -l 100 data/benchmark/4800_100_100.csv -n ./temp/split,0.14711652950700005,0.026916246931867224,0.14920691270000003,0.07085429499999993,0.044632064999999915,0.1128844552,0.23034345220000002,data/benchmark/4800_100_100.csv +bin/csv-split -l 100 data/benchmark/6300_100_100.csv -n ./temp/split,0.19706306894899991,0.020605472452481257,0.1897879237,0.092385014,0.058674505000000064,0.1476696892,0.3135800852,data/benchmark/6300_100_100.csv +bin/csv-split -l 100 data/benchmark/500_100_100.csv -n ./temp/split,0.011714564168999997,0.0005668764754640916,0.011403233700000001,0.007254693999999998,0.004406203100000005,0.0111657332,0.0171179552,data/benchmark/500_100_100.csv +bin/csv-split -l 100 data/benchmark/9100_100_100.csv -n ./temp/split,0.286997572876,0.026684585250215564,0.28526781320000005,0.13356386400000014,0.08412507799999994,0.2131786832,0.5814719722,data/benchmark/9100_100_100.csv +bin/csv-split -l 100 data/benchmark/3100_100_100.csv -n ./temp/split,0.09229436920600007,0.014959137548855058,0.09425990819999999,0.04573116800000007,0.029263670000000023,0.0729645022,0.1838282012,data/benchmark/3100_100_100.csv +bin/csv-split -l 100 data/benchmark/5700_100_100.csv -n ./temp/split,0.17820380265399996,0.018948255752624724,0.17373479270000003,0.08354647099999997,0.053052372999999986,0.1337445432,0.35862489620000004,data/benchmark/5700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8600_100.csv -n ./temp/split,0.12303750147499998,0.0010346486450058302,0.1225571452,0.08617448900000016,0.03663708300000002,0.1216608532,0.1268769952,data/benchmark/100_8600_100.csv +bin/csv-split -l 100 data/benchmark/100_7900_100.csv -n ./temp/split,0.11317071575100011,0.0013162735108393465,0.1124215182,0.07960446600000007,0.033348322999999944,0.11180554520000001,0.1206536212,data/benchmark/100_7900_100.csv +bin/csv-split -l 100 data/benchmark/9900_100_100.csv -n ./temp/split,0.31284554019800065,0.026315806314502983,0.3091911117,0.1449323030000001,0.0917858139999999,0.2318648772,0.42369140820000006,data/benchmark/9900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_8300_100.csv -n ./temp/split,0.11918885129100004,0.0013637721297075705,0.1185569612,0.08355981999999998,0.035403665,0.11781391120000001,0.1267594692,data/benchmark/100_8300_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6800.csv -n ./temp/split,0.08308569956599991,0.0013439829650746292,0.0822015807,0.05557346499999998,0.027340779999999995,0.0817635092,0.0897060032,data/benchmark/100_100_6800.csv +bin/csv-split -l 100 data/benchmark/2200_100_100.csv -n ./temp/split,0.06468274030399986,0.013857939510977227,0.0549047042,0.032532069999999975,0.020816468000000025,0.051977464200000004,0.1883356132,data/benchmark/2200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_7500_100.csv -n ./temp/split,0.10785941881399998,0.0013988248759285854,0.1070439842,0.07488301100000004,0.03276723799999999,0.10670727020000001,0.11526619020000001,data/benchmark/100_7500_100.csv +bin/csv-split -l 100 data/benchmark/7500_100_100.csv -n ./temp/split,0.2350611039940002,0.023767404282825106,0.24218670320000002,0.11050331400000006,0.06930211399999996,0.1761136572,0.36392558520000007,data/benchmark/7500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9300_100.csv -n ./temp/split,0.1332011399839999,0.0014459332740725727,0.1324049802,0.09324925700000009,0.03968934999999999,0.13204768120000002,0.1406073072,data/benchmark/100_9300_100.csv +bin/csv-split -l 100 data/benchmark/100_300_100.csv -n ./temp/split,0.004704711481000007,0.00034256860659883775,0.0045976632,0.0031849069600000056,0.0015575668000000014,0.0045374952,0.0074515872,data/benchmark/100_300_100.csv +bin/csv-split -l 100 data/benchmark/100_4200_100.csv -n ./temp/split,0.060934052809000036,0.000892859589258272,0.06039486720000001,0.04217221799999999,0.0186333,0.06012052620000001,0.0670548562,data/benchmark/100_4200_100.csv +bin/csv-split -l 100 data/benchmark/8400_100_100.csv -n ./temp/split,0.2638314760960001,0.023836458528511885,0.26394148920000005,0.12314971700000002,0.07782478199999994,0.1969367142,0.48826164220000007,data/benchmark/8400_100_100.csv +bin/csv-split -l 100 data/benchmark/3600_100_100.csv -n ./temp/split,0.10822624823999998,0.012288507297458914,0.1086369172,0.05320878400000004,0.033662279,0.0847060662,0.1715981152,data/benchmark/3600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9600.csv -n ./temp/split,0.11692690641099993,0.0016039779813820808,0.1158935687,0.07855308300000001,0.03814427500000007,0.1155504442,0.1265752382,data/benchmark/100_100_9600.csv +bin/csv-split -l 100 data/benchmark/8300_100_100.csv -n ./temp/split,0.2639127428440004,0.030672556890935985,0.2633473327,0.12228051199999994,0.07695013499999998,0.1945886412,0.42695533520000006,data/benchmark/8300_100_100.csv +bin/csv-split -l 100 data/benchmark/5600_100_100.csv -n ./temp/split,0.17388527525300015,0.014698264775602267,0.1712385157,0.08217821800000007,0.052008276000000055,0.1317864092,0.2335976442,data/benchmark/5600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_10000_100.csv -n ./temp/split,0.14428219320699986,0.0015030010978012657,0.14358996870000001,0.09985704200000008,0.04415040100000005,0.1426956262,0.1537679492,data/benchmark/100_10000_100.csv +bin/csv-split -l 100 data/benchmark/100_7400_100.csv -n ./temp/split,0.10684121976100001,0.0014525351598077604,0.1059752402,0.07474791800000007,0.031873977000000005,0.1056677152,0.1160507122,data/benchmark/100_7400_100.csv +bin/csv-split -l 100 data/benchmark/4200_100_100.csv -n ./temp/split,0.12936047473800016,0.017635660700748734,0.12797297270000002,0.06201890200000006,0.03943537900000003,0.09904466220000001,0.2696401332,data/benchmark/4200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5600.csv -n ./temp/split,0.06936783677300003,0.0009561249316033687,0.06897885270000001,0.04588234700000005,0.02333380599999998,0.0682084722,0.0747258532,data/benchmark/100_100_5600.csv +bin/csv-split -l 100 data/benchmark/100_6700_100.csv -n ./temp/split,0.09757942812,0.0014918556932251707,0.0968010077,0.06760735600000004,0.02976351599999996,0.0961789302,0.1068617812,data/benchmark/100_6700_100.csv +bin/csv-split -l 100 data/benchmark/100_100_4000.csv -n ./temp/split,0.05020474684000004,0.0006609748732567748,0.050305960200000006,0.03314306399999999,0.016943255000000008,0.049346788200000005,0.05385711320000001,data/benchmark/100_100_4000.csv +bin/csv-split -l 100 data/benchmark/100_1000_100.csv -n ./temp/split,0.015158384964000004,0.00044960532738318556,0.0150307097,0.010337204000000006,0.004774890400000003,0.014876390199999999,0.0200713132,data/benchmark/100_1000_100.csv +bin/csv-split -l 100 data/benchmark/8700_100_100.csv -n ./temp/split,0.2750427640379999,0.026931044556343656,0.2726666647,0.12804426099999994,0.08179537899999986,0.2056222872,0.45732361520000003,data/benchmark/8700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9500.csv -n ./temp/split,0.11674267158099996,0.0015383578382204511,0.1159179457,0.07675114799999994,0.039774446000000005,0.1155575622,0.12545718520000002,data/benchmark/100_100_9500.csv +bin/csv-split -l 100 data/benchmark/4700_100_100.csv -n ./temp/split,0.14440769163500014,0.015280284407644026,0.1431630817,0.06921728299999992,0.04423127599999997,0.1113243142,0.22312475920000002,data/benchmark/4700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1800.csv -n ./temp/split,0.023377563361999986,0.0007840949063796537,0.023075960200000002,0.015308604999999972,0.008001935000000002,0.0225287272,0.026999208200000003,data/benchmark/100_100_1800.csv +bin/csv-split -l 100 data/benchmark/100_1600_100.csv -n ./temp/split,0.024231948907000016,0.0007737846778361409,0.0239488937,0.016524425000000002,0.007638529000000004,0.0234213992,0.030528573200000002,data/benchmark/100_1600_100.csv +bin/csv-split -l 100 data/benchmark/9300_100_100.csv -n ./temp/split,0.2942724832880006,0.025129132041963785,0.29579295820000007,0.1367240460000001,0.08743718300000007,0.2198031892,0.40249062020000004,data/benchmark/9300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3300.csv -n ./temp/split,0.041444199527,0.0008299103409411436,0.0410988357,0.027232441999999975,0.014113867999999998,0.0407132482,0.04952456920000001,data/benchmark/100_100_3300.csv +bin/csv-split -l 100 data/benchmark/100_100_3000.csv -n ./temp/split,0.037221143171999975,0.0007227936123151996,0.036839176700000004,0.02476503699999999,0.012355868000000006,0.036599006200000006,0.04196914720000001,data/benchmark/100_100_3000.csv +bin/csv-split -l 100 data/benchmark/100_2700_100.csv -n ./temp/split,0.039391424556999996,0.0004924388242401976,0.039486601700000006,0.02728798899999996,0.012009987999999996,0.03876594120000001,0.04506744420000001,data/benchmark/100_2700_100.csv +bin/csv-split -l 100 data/benchmark/6200_100_100.csv -n ./temp/split,0.19372350156400023,0.01778540640660544,0.1972175492,0.09145761299999985,0.0577773019999999,0.1463401232,0.27825553020000005,data/benchmark/6200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_600.csv -n ./temp/split,0.008207220888999986,0.0004893364073611214,0.0080330867,0.005435482999999997,0.002742786700000002,0.0078840902,0.0120747512,data/benchmark/100_100_600.csv +bin/csv-split -l 100 data/benchmark/8600_100_100.csv -n ./temp/split,0.2730396363029997,0.028837983529239122,0.2705396017,0.12662434700000014,0.07969673700000005,0.20197666520000002,0.5502264632,data/benchmark/8600_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9900_100.csv -n ./temp/split,0.14239405003700004,0.0015567035429984877,0.1416637287,0.09944436600000005,0.042677834999999935,0.1407445842,0.15253838120000002,data/benchmark/100_9900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3600.csv -n ./temp/split,0.04480602509099995,0.0007423016026017698,0.0444675967,0.029744651000000018,0.014955834999999995,0.0441708062,0.05124601520000001,data/benchmark/100_100_3600.csv +bin/csv-split -l 100 data/benchmark/6700_100_100.csv -n ./temp/split,0.2115237740729997,0.020773765940280912,0.2138820407,0.0982941049999998,0.06267989599999998,0.1578883762,0.3322156512,data/benchmark/6700_100_100.csv +bin/csv-split -l 100 data/benchmark/4100_100_100.csv -n ./temp/split,0.12604818366000006,0.017827148299655586,0.12595098370000002,0.059920435000000036,0.038662681999999976,0.0964499352,0.2358811882,data/benchmark/4100_100_100.csv +bin/csv-split -l 100 data/benchmark/700_100_100.csv -n ./temp/split,0.016785979624999985,0.0008813964047242846,0.0167220352,0.010191854999999994,0.006489831000000001,0.0160259162,0.03295969520000001,data/benchmark/700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9000.csv -n ./temp/split,0.11030359261599992,0.0013918409992361826,0.1094899312,0.07340006999999987,0.036686432000000005,0.10873986520000001,0.11474290720000001,data/benchmark/100_100_9000.csv +bin/csv-split -l 100 data/benchmark/100_100_900.csv -n ./temp/split,0.012444631431999992,0.0006812824085659544,0.012124489200000001,0.008106480999999994,0.0042897747999999965,0.0117456272,0.017363443200000002,data/benchmark/100_100_900.csv +bin/csv-split -l 100 data/benchmark/100_100_5200.csv -n ./temp/split,0.064519136094,0.001229964101316091,0.0646573202,0.04299532400000004,0.02136281499999999,0.0632323742,0.0734426832,data/benchmark/100_100_5200.csv +bin/csv-split -l 100 data/benchmark/100_100_9400.csv -n ./temp/split,0.11496467912500011,0.00185065102102959,0.1149591827,0.07682664700000003,0.037905246999999934,0.1126293232,0.1245422092,data/benchmark/100_100_9400.csv +bin/csv-split -l 100 data/benchmark/100_100_2300.csv -n ./temp/split,0.029115339165999992,0.0006988710356605095,0.029144870700000002,0.019216376999999982,0.009810435,0.0283881172,0.035662348200000006,data/benchmark/100_100_2300.csv +bin/csv-split -l 100 data/benchmark/5200_100_100.csv -n ./temp/split,0.1615955156439999,0.016118893174332218,0.15992647670000001,0.07627660200000001,0.047820069999999985,0.1221998472,0.2897479592,data/benchmark/5200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1200_100.csv -n ./temp/split,0.018063055103000027,0.0006490937926284602,0.0179214122,0.012366458000000006,0.005646431699999995,0.017594710200000002,0.0239304252,data/benchmark/100_1200_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5000.csv -n ./temp/split,0.06117799943399988,0.0008150537798701066,0.06072971820000001,0.041049425999999986,0.019994647000000004,0.060572011200000005,0.0674693962,data/benchmark/100_100_5000.csv +bin/csv-split -l 100 data/benchmark/200_100_100.csv -n ./temp/split,0.004207799008999998,0.00035862231722912275,0.0040698277,0.002610338045000003,0.0016129266999999965,0.003987220200000001,0.006752612200000001,data/benchmark/200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5900.csv -n ./temp/split,0.07178609766100004,0.0010926169036477315,0.0712822682,0.04799093900000001,0.02364233599999997,0.0708445632,0.0803413162,data/benchmark/100_100_5900.csv +bin/csv-split -l 100 data/benchmark/100_100_6700.csv -n ./temp/split,0.08166651332599997,0.0011726836264763219,0.0810054102,0.0546671599999999,0.026828694000000004,0.0804830732,0.0866847742,data/benchmark/100_100_6700.csv +bin/csv-split -l 100 data/benchmark/100_8400_100.csv -n ./temp/split,0.12024790750399986,0.0015566663619720337,0.1193130922,0.08360770300000017,0.03640268800000003,0.1189885752,0.1296951622,data/benchmark/100_8400_100.csv +bin/csv-split -l 100 data/benchmark/100_9500_100.csv -n ./temp/split,0.13621055985000002,0.0013668123696648669,0.1355320462,0.09549319999999992,0.040465842999999974,0.1348844952,0.1448939242,data/benchmark/100_9500_100.csv +bin/csv-split -l 100 data/benchmark/4600_100_100.csv -n ./temp/split,0.14151143864000015,0.015148244332915981,0.1380213452,0.067695912,0.04335648800000003,0.1087256692,0.22179862220000002,data/benchmark/4600_100_100.csv +bin/csv-split -l 100 data/benchmark/8100_100_100.csv -n ./temp/split,0.2564172131389998,0.024731431111995956,0.25491165120000003,0.1195095360000001,0.07674414499999996,0.1918899162,0.3951195552,data/benchmark/8100_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1600.csv -n ./temp/split,0.020860668164999995,0.0007594869838575717,0.020512808700000003,0.013657176000000035,0.0071394469999999976,0.0201183602,0.027274902200000003,data/benchmark/100_100_1600.csv +bin/csv-split -l 100 data/benchmark/100_3000_100.csv -n ./temp/split,0.04367347427999999,0.0010408330929394867,0.043130104700000005,0.030522457999999992,0.013031024000000006,0.042929117200000005,0.05259698420000001,data/benchmark/100_3000_100.csv +bin/csv-split -l 100 data/benchmark/300_100_100.csv -n ./temp/split,0.006850433934999996,0.0004797616529763957,0.0067067697,0.004280603000000008,0.002546042199999998,0.0063643212,0.0094136562,data/benchmark/300_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9700.csv -n ./temp/split,0.11929856932299993,0.0013334420204812623,0.1184651977,0.07932427599999997,0.03975126199999993,0.1176463022,0.12242576420000001,data/benchmark/100_100_9700.csv +bin/csv-split -l 100 data/benchmark/100_100_2500.csv -n ./temp/split,0.03154566575499996,0.0007262485433671964,0.03126256470000001,0.020941539999999967,0.010510262999999997,0.030908240200000003,0.0358213922,data/benchmark/100_100_2500.csv +bin/csv-split -l 100 data/benchmark/4000_100_100.csv -n ./temp/split,0.12289423550199982,0.01511607047269697,0.1200165987,0.05887648200000002,0.037801735999999996,0.0951349752,0.27038140620000006,data/benchmark/4000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_1700_100.csv -n ./temp/split,0.025559918124999942,0.0006795486107969506,0.025455379700000003,0.01764306800000002,0.007840668,0.0248462892,0.031213409200000004,data/benchmark/100_1700_100.csv +bin/csv-split -l 100 data/benchmark/6500_100_100.csv -n ./temp/split,0.2046432307940002,0.01795822449972305,0.2020279627,0.09551220100000009,0.061632565000000014,0.1537566812,0.32011968120000006,data/benchmark/6500_100_100.csv +bin/csv-split -l 100 data/benchmark/1200_100_100.csv -n ./temp/split,0.032632268133,0.010195874847386703,0.028572920700000004,0.017523650999999998,0.011249598999999994,0.0279538632,0.1080155722,data/benchmark/1200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3800.csv -n ./temp/split,0.04733355406700002,0.0009098929070526655,0.046904235200000005,0.03133014300000002,0.01589229600000003,0.04646168020000001,0.05338375420000001,data/benchmark/100_100_3800.csv +bin/csv-split -l 100 data/benchmark/3700_100_100.csv -n ./temp/split,0.11648556142299998,0.012589428477495317,0.1115793607,0.05435448099999996,0.035044349999999974,0.0882835922,0.19237408820000002,data/benchmark/3700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3700.csv -n ./temp/split,0.04612280175800006,0.0007440562355860217,0.0457986207,0.030527682999999996,0.015491791999999997,0.045400662200000004,0.05296447420000001,data/benchmark/100_100_3700.csv +bin/csv-split -l 100 data/benchmark/100_100_7000.csv -n ./temp/split,0.08592015210899993,0.0010952197468453034,0.0852908507,0.05709179299999997,0.02865332000000003,0.0846389712,0.0904486752,data/benchmark/100_100_7000.csv +bin/csv-split -l 100 data/benchmark/100_4000_100.csv -n ./temp/split,0.05834842989000009,0.0007378250361729817,0.058031375200000006,0.04015248200000005,0.01806302599999998,0.05760712920000001,0.0664657772,data/benchmark/100_4000_100.csv +bin/csv-split -l 100 data/benchmark/100_1100_100.csv -n ./temp/split,0.016956233708,0.0007558693677974571,0.0166032422,0.011666879000000012,0.005235471000000005,0.0162641032,0.021974839200000002,data/benchmark/100_1100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6500.csv -n ./temp/split,0.08012866925700005,0.0010546534776940226,0.0794866937,0.05312043500000001,0.02685205000000001,0.0792124712,0.0878289632,data/benchmark/100_100_6500.csv +bin/csv-split -l 100 data/benchmark/100_8100_100.csv -n ./temp/split,0.11715807192199991,0.0013355635226948797,0.1166471237,0.08138103699999988,0.03554586799999999,0.1157041442,0.1268572272,data/benchmark/100_8100_100.csv +bin/csv-split -l 100 data/benchmark/3000_100_100.csv -n ./temp/split,0.09060375710500004,0.014043566195317245,0.09213161219999999,0.04453345799999996,0.028209717000000026,0.0707773982,0.1673067882,data/benchmark/3000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5300.csv -n ./temp/split,0.06525930881800002,0.000779406116712097,0.0649550292,0.0433682709999999,0.021757676000000024,0.0643955742,0.0697809692,data/benchmark/100_100_5300.csv +bin/csv-split -l 100 data/benchmark/1400_100_100.csv -n ./temp/split,0.037667284556999955,0.008540778313343607,0.0335783392,0.020596957000000037,0.01312023999999998,0.03284806020000001,0.0827250972,data/benchmark/1400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_5700.csv -n ./temp/split,0.069530229721,0.0011055804280235906,0.0688951112,0.04651501499999996,0.02286782700000002,0.0685241922,0.0747013612,data/benchmark/100_100_5700.csv +bin/csv-split -l 100 data/benchmark/100_4300_100.csv -n ./temp/split,0.062364867448000086,0.0008293550737445527,0.0619448297,0.043372983000000025,0.01886096399999998,0.061530496200000014,0.0680216002,data/benchmark/100_4300_100.csv +bin/csv-split -l 100 data/benchmark/100_8900_100.csv -n ./temp/split,0.12825836241799995,0.001247822947191139,0.1275846612,0.08944963399999997,0.038580486000000025,0.1268533522,0.1334766342,data/benchmark/100_8900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3100.csv -n ./temp/split,0.03862902768200005,0.0005764859162553569,0.038843843200000006,0.025493210999999974,0.013048331000000005,0.037903192200000005,0.040664440200000006,data/benchmark/100_100_3100.csv +bin/csv-split -l 100 data/benchmark/100_100_8700.csv -n ./temp/split,0.10631054574700008,0.0012732215535096153,0.1056425277,0.07110984500000006,0.03499339400000002,0.10500760020000001,0.11363103520000001,data/benchmark/100_100_8700.csv +bin/csv-split -l 100 data/benchmark/100_4800_100.csv -n ./temp/split,0.06929831529999995,0.0007819096394221077,0.0688813992,0.04829081200000007,0.020859479000000018,0.0685268192,0.0734171302,data/benchmark/100_4800_100.csv +bin/csv-split -l 100 data/benchmark/5500_100_100.csv -n ./temp/split,0.17264797816099994,0.017702023819798924,0.17129661870000001,0.08118119800000001,0.0519382800000001,0.1299435962,0.27939363520000005,data/benchmark/5500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_7800_100.csv -n ./temp/split,0.11239964612399983,0.0011797833066542764,0.1116864712,0.07815495599999994,0.034036525000000005,0.1112580382,0.1193160202,data/benchmark/100_7800_100.csv +bin/csv-split -l 100 data/benchmark/6400_100_100.csv -n ./temp/split,0.20222694476699973,0.019100304396143332,0.1975565642,0.09411363899999996,0.060811336000000014,0.1512992722,0.33867807020000007,data/benchmark/6400_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6900_100.csv -n ./temp/split,0.09992437955100003,0.0011918022276336529,0.0993452367,0.06945303100000005,0.030268822999999993,0.09866916220000001,0.1061860012,data/benchmark/100_6900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_9300.csv -n ./temp/split,0.11414531287199987,0.0014776701850242001,0.1133236937,0.07578688099999999,0.038140977999999964,0.1125195432,0.1211591962,data/benchmark/100_100_9300.csv +bin/csv-split -l 100 data/benchmark/100_100_1200.csv -n ./temp/split,0.016175912132000005,0.0007746239496374428,0.0157487477,0.010604893999999998,0.005518789999999994,0.015424287200000001,0.021944854200000002,data/benchmark/100_100_1200.csv +bin/csv-split -l 100 data/benchmark/7900_100_100.csv -n ./temp/split,0.2519569573210001,0.027435936367518184,0.25051239320000007,0.11640252599999996,0.07448151200000001,0.18720221720000002,0.4324027442000001,data/benchmark/7900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6500_100.csv -n ./temp/split,0.0934065836099999,0.0009929722012816575,0.0929773777,0.06525023200000007,0.027971955999999996,0.0923744412,0.0987832362,data/benchmark/100_6500_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6400.csv -n ./temp/split,0.07843365096699992,0.0010025162997227173,0.07800745519999999,0.05260101199999994,0.025674136000000004,0.0774847412,0.08753362320000001,data/benchmark/100_100_6400.csv +bin/csv-split -l 100 data/benchmark/5000_100_100.csv -n ./temp/split,0.1549852251760002,0.016286678385700994,0.1534749272,0.0735210159999999,0.046308489000000015,0.1178262912,0.2368879842,data/benchmark/5000_100_100.csv +bin/csv-split -l 100 data/benchmark/4900_100_100.csv -n ./temp/split,0.15453647982299998,0.01761264314774335,0.15125146420000002,0.0720928640000001,0.045424710999999944,0.1152301782,0.3259712732,data/benchmark/4900_100_100.csv +bin/csv-split -l 100 data/benchmark/100_3900_100.csv -n ./temp/split,0.056792973645,0.0009748573566078763,0.05700393220000001,0.039700176999999975,0.016962437999999986,0.055836212200000006,0.0657676742,data/benchmark/100_3900_100.csv +bin/csv-split -l 100 data/benchmark/2800_100_100.csv -n ./temp/split,0.08425943698100004,0.016883617338108902,0.0888166682,0.041149808999999996,0.026108872000000026,0.0659689242,0.1483507682,data/benchmark/2800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_900_100.csv -n ./temp/split,0.013941524143000015,0.0005686178245267568,0.0136578597,0.009679097999999994,0.004220507599999996,0.0133216062,0.0172323742,data/benchmark/100_900_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6600.csv -n ./temp/split,0.0801486069390002,0.0011656318627163598,0.0794211272,0.053736632000000055,0.026251035999999995,0.0788888842,0.0869443862,data/benchmark/100_100_6600.csv +bin/csv-split -l 100 data/benchmark/3500_100_100.csv -n ./temp/split,0.10795017201799995,0.01694728986783356,0.1136317097,0.05128132900000008,0.032832453999999976,0.0826669792,0.1785604802,data/benchmark/3500_100_100.csv +bin/csv-split -l 100 data/benchmark/400_100_100.csv -n ./temp/split,0.009998111859999994,0.003417490251042996,0.0095701292,0.005861484000000005,0.0036163265000000023,0.008781456200000001,0.05502037120000001,data/benchmark/400_100_100.csv +bin/csv-split -l 100 data/benchmark/9000_100_100.csv -n ./temp/split,0.2901449831279998,0.03243512946375374,0.28759477270000006,0.132845338,0.08438014900000003,0.2117848712,0.5506836602,data/benchmark/9000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_6900.csv -n ./temp/split,0.08412993009800002,0.001311046581055567,0.0833947877,0.05618574900000001,0.027772126000000015,0.0827622712,0.0922101442,data/benchmark/100_100_6900.csv +bin/csv-split -l 100 data/benchmark/100_100_1400.csv -n ./temp/split,0.018510828952000007,0.0007560141270449238,0.0182197267,0.012185326999999963,0.006269034700000005,0.0176546962,0.0238448302,data/benchmark/100_100_1400.csv +bin/csv-split -l 100 data/benchmark/2400_100_100.csv -n ./temp/split,0.07241947231900003,0.017276877481506487,0.0769209377,0.035265427999999974,0.022734023999999985,0.05637032620000001,0.23044496120000002,data/benchmark/2400_100_100.csv +bin/csv-split -l 100 data/benchmark/6800_100_100.csv -n ./temp/split,0.2193715074280001,0.032457088136369425,0.21487915820000003,0.099929382,0.06354707399999994,0.1600699512,0.48729153320000007,data/benchmark/6800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4900_100.csv -n ./temp/split,0.07109979222099999,0.000951599713941748,0.0706180537,0.04954750499999997,0.02140088399999998,0.0700935082,0.0775781682,data/benchmark/100_4900_100.csv +bin/csv-split -l 100 data/benchmark/1100_100_100.csv -n ./temp/split,0.02791996783499998,0.003570025018969353,0.0272703632,0.016421848,0.010296463000000007,0.025535254200000003,0.0633112312,data/benchmark/1100_100_100.csv +bin/csv-split -l 100 data/benchmark/1900_100_100.csv -n ./temp/split,0.056794042673000034,0.018286961399240808,0.04567547920000001,0.027713021999999983,0.017769986999999998,0.0445346542,0.14328625520000002,data/benchmark/1900_100_100.csv +bin/csv-split -l 100 data/benchmark/2500_100_100.csv -n ./temp/split,0.07543155458299995,0.021233868958779614,0.060758770200000006,0.03654308599999996,0.02347173999999998,0.058763425200000004,0.2195086312,data/benchmark/2500_100_100.csv +bin/csv-split -l 100 data/benchmark/100_9200_100.csv -n ./temp/split,0.132309863864,0.0015812345036822855,0.1317644732,0.09220424699999988,0.03985646899999997,0.1304924972,0.1381234722,data/benchmark/100_9200_100.csv +bin/csv-split -l 100 data/benchmark/100_9800_100.csv -n ./temp/split,0.140395218695,0.0013153079646823472,0.13970237470000002,0.09832874800000001,0.04181426400000004,0.1391077082,0.1460846032,data/benchmark/100_9800_100.csv +bin/csv-split -l 100 data/benchmark/100_100_3200.csv -n ./temp/split,0.03955641528900001,0.0006616008825179678,0.03918126370000001,0.02636418800000001,0.013096879000000014,0.0389950042,0.045575767200000006,data/benchmark/100_100_3200.csv +bin/csv-split -l 100 data/benchmark/100_400_100.csv -n ./temp/split,0.006438608357000003,0.0005540986721265399,0.0062141607000000005,0.004408565000000007,0.0020346835999999996,0.0059896381999999995,0.0096288962,data/benchmark/100_400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2600.csv -n ./temp/split,0.03251340294300006,0.0008395540503374027,0.0325308762,0.021796176999999976,0.010624750999999974,0.031816055200000005,0.040990704200000005,data/benchmark/100_100_2600.csv +bin/csv-split -l 100 data/benchmark/100_6000_100.csv -n ./temp/split,0.086064201504,0.000984223994017818,0.08558489920000001,0.05966772500000004,0.026224883000000025,0.0852503762,0.0927345742,data/benchmark/100_6000_100.csv +bin/csv-split -l 100 data/benchmark/100_100_2200.csv -n ./temp/split,0.027752477384000024,0.0008177244129018508,0.0276164442,0.018478759000000004,0.009193429999999995,0.0270708832,0.035429619200000005,data/benchmark/100_100_2200.csv +bin/csv-split -l 100 data/benchmark/100_2100_100.csv -n ./temp/split,0.030987548181999988,0.0009875955826750096,0.030486467700000002,0.021499030000000006,0.009392300999999994,0.0303868772,0.03942131420000001,data/benchmark/100_2100_100.csv +bin/csv-split -l 100 data/benchmark/8800_100_100.csv -n ./temp/split,0.285616913173,0.03438855280363721,0.28407747820000007,0.12980110500000006,0.08336419099999988,0.20713538920000002,0.6377714972,data/benchmark/8800_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6100_100.csv -n ./temp/split,0.08816487602799994,0.0012017661725096476,0.0874589652,0.06158129700000003,0.026406362999999988,0.08712334320000001,0.0977143692,data/benchmark/100_6100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_7300.csv -n ./temp/split,0.08967004023600005,0.0014282927212840304,0.0887886852,0.060003194000000024,0.02948084800000001,0.0884091592,0.0990407142,data/benchmark/100_100_7300.csv +bin/csv-split -l 100 data/benchmark/2700_100_100.csv -n ./temp/split,0.08215477820300003,0.013840587646489202,0.0842800222,0.03971219300000001,0.025811959,0.0641171712,0.1984462102,data/benchmark/2700_100_100.csv +bin/csv-split -l 100 data/benchmark/100_4400_100.csv -n ./temp/split,0.06420803047200005,0.0008649008378088655,0.0637712242,0.044188582000000004,0.019880967000000017,0.0635412542,0.0731036162,data/benchmark/100_4400_100.csv +bin/csv-split -l 100 data/benchmark/100_100_8300.csv -n ./temp/split,0.1028409825149999,0.0011899413734591242,0.1022592502,0.06813175900000003,0.03451919799999999,0.1016092022,0.1079379532,data/benchmark/100_100_8300.csv +bin/csv-split -l 100 data/benchmark/6000_100_100.csv -n ./temp/split,0.19762826085300012,0.024832327837356356,0.1903042572,0.088303561,0.05685600199999991,0.1419801352,0.41527156120000003,data/benchmark/6000_100_100.csv +bin/csv-split -l 100 data/benchmark/100_6300_100.csv -n ./temp/split,0.09177104456399994,0.0011006426208014614,0.09121639370000001,0.06351565799999996,0.028059377,0.09076343020000001,0.0989997902,data/benchmark/100_6300_100.csv +bin/csv-split -l 100 data/benchmark/100_1300_100.csv -n ./temp/split,0.02010740070000002,0.0007605865273557117,0.0198319342,0.013778450999999997,0.006268363000000001,0.0193092962,0.0248631662,data/benchmark/100_1300_100.csv +bin/csv-split -l 100 data/benchmark/8200_100_100.csv -n ./temp/split,0.27586169679699996,0.03782731402174413,0.27345326020000005,0.1208782489999999,0.077836313,0.1947096502,0.5518042692,data/benchmark/8200_100_100.csv +bin/csv-split -l 100 data/benchmark/100_100_1900.csv -n ./temp/split,0.024946891465000013,0.0006936754381506672,0.0247815132,0.016289211,0.008585313000000006,0.0240360142,0.028826687200000003,data/benchmark/100_100_1900.csv diff --git a/scripts/benchmark_miltfra.sh b/scripts/benchmark_miltfra.sh index d07c18a..30dc4b8 100755 --- a/scripts/benchmark_miltfra.sh +++ b/scripts/benchmark_miltfra.sh @@ -7,7 +7,7 @@ if [ -z "$4" ]; then printf "Expected 4 arguments: \n" exit 1 fi -dout="./tmp" +dout="./temp" rm -rf $dout files=$(find $1 -type f | paste -sd ',') hyperfine \ diff --git a/scripts/benchmark_xsv.sh b/scripts/benchmark_xsv.sh new file mode 100755 index 0000000..7d6f441 --- /dev/null +++ b/scripts/benchmark_xsv.sh @@ -0,0 +1,22 @@ +#!/bin/sh +DIR=$1 +BIN=$2 +NUM_LINES=$3 +OUT_LOG=$4 +if [ -z "$4" ]; then + printf "Expected 4 arguments: \n" + exit 1 +fi +dout="./temp" +rm -rf $dout +files=$(find $1 -type f | paste -sd ',') +hyperfine \ + "$BIN split -s $NUM_LINES $dout/xsv {file}" \ + --export-csv $OUT_LOG \ + -m 3 \ + -i \ + --warmup 3 \ + -L file $files \ + --prepare "mkdir -p $dout" \ + --cleanup "rm -rf $dout" \ + --show-output \ No newline at end of file diff --git a/src/flags.c b/src/flags.c index 172a84d..d0034a8 100644 --- a/src/flags.c +++ b/src/flags.c @@ -121,21 +121,21 @@ static int parse_short_flag( size_t *at) { size_t subflag = 1; // First character is -, so first flag char is at 1. size_t start = *at; - size_t tmp_at; + size_t temp_at; char found; do { found = 0; for (struct Flag *f = FLAGS; f < FLAGS + FLAG_COUNT; f++) { if (argv[start][subflag] == f->short_id) { - tmp_at = *at; + temp_at = *at; LOG("Found short flag for %s\n", f->long_id); - parse_flag_by_index(cfg, argc, argv, &tmp_at, f - FLAGS); - if (tmp_at > + parse_flag_by_index(cfg, argc, argv, &temp_at, f - FLAGS); + if (temp_at > start + 1) { // Boolean flags are not allowed after flags // that require a value. (e.g. `-ne ` is illegal) LOG("Last flag was non-boolean.\n"); - return *at = tmp_at; + return *at = temp_at; } found = 1; break; From 2e921f6e2882aa9393514132dbff128e55e6bcba Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Sun, 22 Nov 2020 13:50:02 +0000 Subject: [PATCH 13/14] Added mkdir as dependency for bench-mkdir --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d5d7ddd..a7cb55a 100644 --- a/Makefile +++ b/Makefile @@ -128,7 +128,7 @@ comparisons: mkdir test-mkdir benchmark: $(DATA_DIR)/benchmark bench-build .PHONY: bench-mkdir -bench-mkdir: +bench-mkdir: mkdir mkdir -p $(BENCH_BUILD_DIR) .PHONY: bench-build From 6b1f493138a7b4c41ef50a5bf4baeacb7b189b7d Mon Sep 17 00:00:00 2001 From: Franz Miltz Date: Mon, 23 Nov 2020 09:59:33 +0000 Subject: [PATCH 14/14] Made build messages more user-friendly --- Makefile | 115 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 51 deletions(-) diff --git a/Makefile b/Makefile index a7cb55a..4f61661 100644 --- a/Makefile +++ b/Makefile @@ -24,129 +24,142 @@ BENCH_OBJ_LIST = $(addprefix $(BENCH_BUILD_DIR)/,$(BENCH_LIST:%=%.o)) INSTALL_DIR = /usr/local/bin DATA_DIR = ./data TEMP_DIR = ./temp +VERBOSE = 0 +ifeq ($(VERBOSE),0) + V := @ +else + V := +endif .PHONY: all -all: version build comparisons +all: build comparisons .PHONY: version version: - # make version - @$(CC) --version - @sh -c "if [ $(CC) != $(LD) ]; then $(LD) --version; fi" + $(V) $(CC) --version + $(V) sh -c "if [ $(CC) != $(LD) ]; then $(LD) --version; fi" $(BUILD_DIR)/%.o: - $(CC) -c $(CFLAG) -o $@ $(SRC_DIR)/$(notdir $(@:%.o=%.c)) + @echo "Compiling $@" + $(V) $(CC) -c $(CFLAG) -o $@ $(SRC_DIR)/$(notdir $(@:%.o=%.c)) .PHONY: compile compile: $(OBJ_LIST) .PHONY: mkdir mkdir: - # make mkdir - mkdir -p $(BUILD_DIR) - mkdir -p $(BIN_DIR) + $(V) mkdir -p $(BUILD_DIR) + $(V) mkdir -p $(BIN_DIR) .PHONY: build build: mkdir compile - # make build - $(LD) $(OBJ_LIST) -o $(BIN_DIR)/$(PROG_NAME) + @echo "Linking $(BIN_DIR)/$(PROG_NAME)" + $(V) $(LD) $(OBJ_LIST) -o $(BIN_DIR)/$(PROG_NAME) .PHONY: clean -clean: test-clean - # make clean - -rm -rf $(BIN_DIR) $(BUILD_DIR) +clean: test-clean bench-clean + $(V) -rm -rf $(BIN_DIR) $(BUILD_DIR) .PHONY: check check: - # make check - $(FILES_EXIST) $(OBJ_LIST) - $(FILES_EXIST) $(BIN_DIR)/$(PROG_NAME) + @echo "Checking object files" + $(V) $(FILES_EXIST) $(OBJ_LIST) + @echo "Checking binaries" + $(V) $(FILES_EXIST) $(BIN_DIR)/$(PROG_NAME) .PHONY: install install: build - # make install - mkdir -p $(INSTALL_DIR) - cp $(BIN_DIR)/$(PROG_NAME) $(INSTALL_DIR)/$(PROG_NAME) + $(V) mkdir -p $(INSTALL_DIR) + $(V) cp $(BIN_DIR)/$(PROG_NAME) $(INSTALL_DIR)/$(PROG_NAME) .PHONY: uninstall uninstall: - # make uninstall - rm -rf $(INSTALL_DIR)/$(PROG_NAME) + $(V) rm -rf $(INSTALL_DIR)/$(PROG_NAME) .PHONY: install-local install-local: $(PROG_NAME) - # make install-local - mkdir -p $(DESTDIR) - cp $(BIN_DIR)/$(PROG_NAME) $(DESTDIR)/$(PROG_NAME) + $(V) mkdir -p $(DESTDIR) + $(V) cp $(BIN_DIR)/$(PROG_NAME) $(DESTDIR)/$(PROG_NAME) .PHONY: uninstall-local uninstall-local: # make uninstall-local - rm -rf $(DESTDIR)/$(PROG_NAME) + $(V) rm -rf $(DESTDIR)/$(PROG_NAME) .PHONY: test -test: version clean build check test-build - # make test - # checking whether comparisons work - $(BIN_DIR)/compare-files $(BIN_DIR)/compare-files $(BIN_DIR)/compare-files - $(BIN_DIR)/compare-dirs $(BIN_DIR) $(BIN_DIR) - # preparing data directory - ./scripts/init_test.sh - $(BIN_DIR)/tests $(BIN_DIR)/$(PROG_NAME) $(DATA_DIR)/test $(TEMP_DIR)/test +test: clean build check test-build + @echo "Testing test utils" + $(V) $(BIN_DIR)/compare-files $(BIN_DIR)/compare-files $(BIN_DIR)/compare-files + $(V) $(BIN_DIR)/compare-dirs $(BIN_DIR) $(BIN_DIR) + @echo "Initialising tests" + $(V) ./scripts/init_test.sh + @echo "----- Running tests -----" + $(V) $(BIN_DIR)/tests $(BIN_DIR)/$(PROG_NAME) $(DATA_DIR)/test $(TEMP_DIR)/test + @echo "-------------------------" .PHONY: test-build test-build: test-mkdir comparisons test-compile .PHONY: test-mkdir test-mkdir: - # make test-mkdir - mkdir -p $(TEST_BUILD_DIR) + $(V) mkdir -p $(TEST_BUILD_DIR) $(TEST_BUILD_DIR)/%.o: - $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) + @echo "Compiling $@" + $(V) $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) .PHONY: test-compile test-compile: $(TEST_OBJ_LIST) - # make test-compile - $(LD) -o $(BIN_DIR)/tests $(TEST_OBJ_LIST) + @echo "Linking $(BIN_DIR)/tests" + $(V) $(LD) -o $(BIN_DIR)/tests $(TEST_OBJ_LIST) .PHONY: test-clean test-clean: - # make test-clean - -rm -rf $(TEMP_DIR) $(TEST_BUILD_DIR) + $(V) -rm -rf $(TEMP_DIR) $(TEST_BUILD_DIR) .PHONY: comparisons comparisons: mkdir test-mkdir - # make comparisons - $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_files.o $(TEST_SRC_DIR)/compare_files.c - $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_directories.o $(TEST_SRC_DIR)/compare_directories.c - $(LD) -o $(BIN_DIR)/compare-files $(TEST_BUILD_DIR)/compare_files.o - $(LD) -o $(BIN_DIR)/compare-dirs $(TEST_BUILD_DIR)/compare_directories.o + @echo "Compiling $(TEST_BUILD_DIR)/compare_files.o" + $(V) $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_files.o $(TEST_SRC_DIR)/compare_files.c + @echo "Compiling $(TEST_BUILD_DIR)/compare_directories.o" + $(V) $(CC) -c $(CFLAG) -o $(TEST_BUILD_DIR)/compare_directories.o $(TEST_SRC_DIR)/compare_directories.c + @echo "Linking $(BIN_DIR)/compare-files" + $(V) $(LD) -o $(BIN_DIR)/compare-files $(TEST_BUILD_DIR)/compare_files.o + @echo "Linking $(BIN_DIR)/compasre-dirs" + $(V) $(LD) -o $(BIN_DIR)/compare-dirs $(TEST_BUILD_DIR)/compare_directories.o .PHONY: benchmark -benchmark: $(DATA_DIR)/benchmark bench-build +benchmark: bench-build $(DATA_DIR)/benchmark .PHONY: bench-mkdir bench-mkdir: mkdir - mkdir -p $(BENCH_BUILD_DIR) + $(V) mkdir -p $(BENCH_BUILD_DIR) + +.PHONY: bench-clean +bench-clean: + $(V) -rm -rf $(BENCH_BUILD_DIR) $(DATA_DIR)/benchmark .PHONY: bench-build bench-build: bench-mkdir bench-compile .PHONY: bench-compile bench-compile: $(BENCH_OBJ_LIST) - $(LD) $(CFLAG) -o $(BIN_DIR)/generate $(BENCH_OBJ_LIST) + @echo "Linking $(BIN_DIR)/generate" + $(V) $(LD) $(CFLAG) -o $(BIN_DIR)/generate $(BENCH_OBJ_LIST) $(BENCH_BUILD_DIR)/%.o: - $(CC) -c $(CFLAG) -o $@ $(BENCH_SRC_DIR)/$(notdir $(@:%.o=%.c)) + @echo "Compiling $@" + $(V) $(CC) -c $(CFLAG) -o $@ $(BENCH_SRC_DIR)/$(notdir $(@:%.o=%.c)) $(DATA_DIR)/benchmark: - scripts/generate_bench_data.py $(BIN_DIR)/generate $(DATA_DIR)/benchmark + @echo "Generating data/benchmark" + $(V) scripts/generate_bench_data.py $(BIN_DIR)/generate $(DATA_DIR)/benchmark $(TEST_BUILD_DIR)/%.o: - $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) + @echo "Compiling $@" + $(V) $(CC) -c $(CFLAG) -o $@ $(TEST_SRC_DIR)/$(notdir $(@:%.o=%.c)) $(BIN_DIR)/imartingraham: git clone https://github.com/imartingraham/csv-split $(BIN_DIR)/imartingraham \ No newline at end of file