From 1f71ba3ef3df61706d7aee1ffa981cf6fdee7c4e Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Tue, 11 Sep 2007 14:49:31 +0200 Subject: [PATCH] Another minor optimization: Added AddRadixBits. --- lib/sorter/common.h | 2 +- lib/sorter/config.c | 2 ++ lib/sorter/govern.c | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/sorter/common.h b/lib/sorter/common.h index 50cbf34b..a97b4dd2 100644 --- a/lib/sorter/common.h +++ b/lib/sorter/common.h @@ -14,7 +14,7 @@ /* Configuration, some of the variables are used by the old sorter, too. */ extern uns sorter_trace, sorter_stream_bufsize; -extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits; +extern uns sorter_debug, sorter_min_radix_bits, sorter_max_radix_bits, sorter_add_radix_bits; extern uns sorter_min_multiway_bits, sorter_max_multiway_bits; extern uns sorter_threads, sorter_thread_threshold, sorter_thread_chunk; extern uns sorter_radix_threshold; diff --git a/lib/sorter/config.c b/lib/sorter/config.c index cc4bb3e6..d12a65bd 100644 --- a/lib/sorter/config.c +++ b/lib/sorter/config.c @@ -18,6 +18,7 @@ u64 sorter_bufsize = 65536; uns sorter_debug; uns sorter_min_radix_bits; uns sorter_max_radix_bits; +uns sorter_add_radix_bits; uns sorter_min_multiway_bits; uns sorter_max_multiway_bits; uns sorter_threads; @@ -35,6 +36,7 @@ static struct cf_section sorter_config = { CF_UNS("Debug", &sorter_debug), CF_UNS("MinRadixBits", &sorter_min_radix_bits), CF_UNS("MaxRadixBits", &sorter_max_radix_bits), + CF_UNS("AddRadixBits", &sorter_add_radix_bits), CF_UNS("MinMultiwayBits", &sorter_min_multiway_bits), CF_UNS("MaxMultiwayBits", &sorter_max_multiway_bits), CF_UNS("Threads", &sorter_threads), diff --git a/lib/sorter/govern.c b/lib/sorter/govern.c index 826417d1..619b351d 100644 --- a/lib/sorter/govern.c +++ b/lib/sorter/govern.c @@ -283,6 +283,9 @@ sorter_multiway(struct sort_context *ctx, struct sort_bucket *b) static void sorter_radix(struct sort_context *ctx, struct sort_bucket *b, uns bits) { + // Add more bits if requested and allowed. + bits = MIN(bits + sorter_add_radix_bits, sorter_max_radix_bits); + uns nbuck = 1 << bits; SORT_XTRACE(2, "Running radix split on %s with hash %d bits of %d (expecting %s buckets)", F_BSIZE(b), bits, b->hash_bits, stk_fsize(sbuck_size(b) / nbuck)); -- 2.39.2