From: sandmann AT clio DOT rice DOT edu (Charles Sandmann) Message-Id: <10210150631.AA20605@clio.rice.edu> Subject: Re: libc' getenv optimization (patch) To: djgpp-workers AT delorie DOT com Date: Tue, 15 Oct 2002 01:28:20 -0500 (CDT) Cc: eliz AT is DOT elta DOT co DOT il, uue AT pauzner DOT dnttm DOT ru In-Reply-To: <2.7.9.1DQU1.H402DW@pauzner.dnttm.ru> from "Leonid Pauzner" at Oct 15, 2002 05:49:08 AM X-Mailer: ELM [version 2.5 PL2] Sender: sandmann AT clio DOT rice DOT edu Reply-To: djgpp-workers AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: djgpp-workers AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk > perhaps a realistic estimates is around 3-10 times for others. > Preparing procedure set_hash_env() will effectively slowdown putenv() a bit, > but we putenv less frequently than getenv, right? If we cache getenv() properly in the tzset(), we'll only call it once. So there's the chance that you call putenv() more frequently (in initialization) than getenv() at runtime. With the very sparse distribution of letters, I think it would be much more space efficient to mask the lower 4 or 5 bits for the buckets (16 or 32 should be fine, 256 is overkill). This also would speed up the initial setup. Here's my proposed patch for ctime.c: *** ctime.bak Sun Jun 9 13:20:22 2002 --- ctime.c Tue Oct 15 01:24:06 2002 *************** tzset(void) *** 920,926 **** /* If environ didn't changed since last time, don't waste time looking at $TZ. */ ! if (lcl_is_set > 0 && __environ_changed == last_env_changed) return; /* If environ did change, but $TZ wasn't changed since last time we --- 920,926 ---- /* If environ didn't changed since last time, don't waste time looking at $TZ. */ ! if (lcl_is_set != 0 && __environ_changed == last_env_changed) return; /* If environ did change, but $TZ wasn't changed since last time we