From 0e5c3c4ebdd0b5f79b90eaeb099c9689c22895b5 Mon Sep 17 00:00:00 2001 From: Christopher Aue Date: Fri, 4 Aug 2017 22:08:29 +0200 Subject: Improved speed of creating new hash tables --- src/hash.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/hash.c b/src/hash.c index 27d25b384..58b6b2f53 100644 --- a/src/hash.c +++ b/src/hash.c @@ -145,10 +145,7 @@ mrb_hash_new_capa(mrb_state *mrb, mrb_int capa) struct RHash *h; h = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class); - h->ht = kh_init(ht, mrb); - if (capa > 0) { - kh_resize(ht, mrb, h->ht, capa); - } + h->ht = kh_init_size(ht, mrb, capa); h->iv = 0; return mrb_obj_value(h); } -- cgit v1.2.3 From ec7475d88b710a70c5465d6144a9cf2113a20984 Mon Sep 17 00:00:00 2001 From: Christopher Aue Date: Sat, 5 Aug 2017 20:42:11 +0200 Subject: Prevented resizing just created hashes in specific size ranges --- src/hash.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/hash.c b/src/hash.c index 58b6b2f53..f7e84463d 100644 --- a/src/hash.c +++ b/src/hash.c @@ -145,7 +145,8 @@ mrb_hash_new_capa(mrb_state *mrb, mrb_int capa) struct RHash *h; h = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class); - h->ht = kh_init_size(ht, mrb, capa); + /* khash needs 1/4 empty space so it is not resized immediately */ + h->ht = kh_init_size(ht, mrb, capa*4/3); h->iv = 0; return mrb_obj_value(h); } -- cgit v1.2.3