public inbox for cygwin-cvs@sourceware.org help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org> To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: cygheap: compute bucket instead of looping over it Date: Fri, 1 Mar 2024 21:37:17 +0000 (GMT) [thread overview] Message-ID: <20240301213717.8AB3E385840E@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=abb532a87ff6ed37f6ee2c8a58c65178a15aa345 commit abb532a87ff6ed37f6ee2c8a58c65178a15aa345 Author: Corinna Vinschen <corinna@vinschen.de> AuthorDate: Fri Mar 1 22:27:40 2024 +0100 Commit: Corinna Vinschen <corinna@vinschen.de> CommitDate: Fri Mar 1 22:35:22 2024 +0100 Cygwin: cygheap: compute bucket instead of looping over it Start at index 0 and use 32 bytes as minimal allocation size. Reduce NBUCKETS, we don't have such big objects on the cygheap anyway. Signed-off-by: Corinna Vinschen <corinna@vinschen.de> Diff: --- winsup/cygwin/local_includes/cygheap.h | 2 +- winsup/cygwin/mm/cygheap.cc | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/local_includes/cygheap.h b/winsup/cygwin/local_includes/cygheap.h index b6acdf7f18b7..9edd61c28abd 100644 --- a/winsup/cygwin/local_includes/cygheap.h +++ b/winsup/cygwin/local_includes/cygheap.h @@ -487,7 +487,7 @@ struct mini_cygheap cygheap_locale locale; }; -#define NBUCKETS 40 +#define NBUCKETS 32 struct threadlist_t { diff --git a/winsup/cygwin/mm/cygheap.cc b/winsup/cygwin/mm/cygheap.cc index c763a0967388..4cc851716fbe 100644 --- a/winsup/cygwin/mm/cygheap.cc +++ b/winsup/cygwin/mm/cygheap.cc @@ -264,15 +264,15 @@ init_cygheap::init_installation_root () /* Initialize bucket_val. The value is the max size of a block fitting into the bucket. The values are powers of two and their - medians: 24, 32, 48, 64, ... + medians: 32, 48, 64, 96, ... The idea is to have better matching bucket sizes (not wasting space) without trading in performance compared to the old powers of 2 method. */ static const uint32_t bucket_val[NBUCKETS] = { - 0, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, - 3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304, - 131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864, 2097152, - 3145728, 4194304, 6291456, 8388608, 12582912 + 32, 48, 64, 96, 128, 192, 256, 384, + 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, + 8192, 12288, 16384, 24576, 32768, 49152, 65536, 98304, + 131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864 }; void @@ -355,11 +355,15 @@ static void * _cmalloc (unsigned size) { _cmalloc_entry *rvc; - unsigned b; + unsigned b = 0; /* Calculate "bit bucket". */ - for (b = 1; b < NBUCKETS && bucket_val[b] < size; b++) - continue; + if (size > bucket_val[0]) + { + const unsigned clz = __builtin_clzl (size - 1); + b = (59 - clz) << 1; + b -= !((size - 1) & (1 << (62 - clz))); + } if (b >= NBUCKETS) return NULL;
reply other threads:[~2024-03-01 21:37 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240301213717.8AB3E385840E@sourceware.org \ --to=corinna@sourceware.org \ --cc=cygwin-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).