From 642067287931da64e485e402e5e1fa5096abcddd Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Fri, 26 Apr 2013 22:23:08 +0200 Subject: curl_easy_init: use less mallocs By introducing an internal alternative to curl_multi_init() that accepts parameters to set the hash sizes, easy handles will now use tiny socket and connection hash tables since it will only ever add a single easy handle to that multi handle. This decreased the number mallocs in test 40 (which is a rather simple and typical easy interface use case) from 1142 to 138. The maximum amount of memory allocated used went down from 118969 to 78805. --- lib/conncache.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'lib/conncache.c') diff --git a/lib/conncache.c b/lib/conncache.c index 530cdc2ec..48271f751 100644 --- a/lib/conncache.c +++ b/lib/conncache.c @@ -38,8 +38,6 @@ /* The last #include file should be: */ #include "memdebug.h" -#define CONNECTION_HASH_SIZE 97 - static void free_bundle_hash_entry(void *freethis) { struct connectbundle *b = (struct connectbundle *) freethis; @@ -47,7 +45,7 @@ static void free_bundle_hash_entry(void *freethis) Curl_bundle_destroy(b); } -struct conncache *Curl_conncache_init(void) +struct conncache *Curl_conncache_init(int size) { struct conncache *connc; @@ -55,7 +53,7 @@ struct conncache *Curl_conncache_init(void) if(!connc) return NULL; - connc->hash = Curl_hash_alloc(CONNECTION_HASH_SIZE, Curl_hash_str, + connc->hash = Curl_hash_alloc(size, Curl_hash_str, Curl_str_key_compare, free_bundle_hash_entry); if(!connc->hash) { -- cgit v1.2.3