From: Hans Kristian Rosbach Date: Tue, 23 Jun 2015 19:14:20 +0000 (+0200) Subject: Optimize deflate_fast by using bulk_insert_str() X-Git-Tag: 1.9.9-b1~796^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=42be2f69d1f7e86950f0122410e6dee0144ff449;p=thirdparty%2Fzlib-ng.git Optimize deflate_fast by using bulk_insert_str() Co-authored with Mika Lindqvist. --- diff --git a/deflate.c b/deflate.c index 395fd46d1..315caae84 100644 --- a/deflate.c +++ b/deflate.c @@ -1444,17 +1444,24 @@ local block_state deflate_fast(deflate_state *s, int flush) { /* Insert new strings in the hash table only if the match length * is not too large. This saves time but degrades compression. */ - if (s->match_length <= s->max_insert_length && - s->lookahead >= MIN_MATCH) { + if (s->match_length <= s->max_insert_length && s->lookahead >= MIN_MATCH) { s->match_length--; /* string at strstart already in table */ + s->strstart++; +#ifdef NOT_TWEAK_COMPILER do { - s->strstart++; insert_string(s, s->strstart); + s->strstart++; /* strstart never exceeds WSIZE-MAX_MATCH, so there are * always MIN_MATCH bytes ahead. */ } while (--s->match_length != 0); - s->strstart++; +#else + { + bulk_insert_str(s, s->strstart, s->match_length); + s->strstart += s->match_length; + s->match_length = 0; + } +#endif } else { s->strstart += s->match_length; s->match_length = 0;