X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fxpress_compress.c;h=a04bc52d207adf35db24bcb3725cefdcef8d897a;hb=1303150699ab5bf40201855fc6923387ddfd5ac0;hp=776de7cdc4c33032f82a75d7d4333f041df36217;hpb=c9be4d389724d00cec9f5e444efb965a449d2ba8;p=wimlib diff --git a/src/xpress_compress.c b/src/xpress_compress.c index 776de7cd..a04bc52d 100644 --- a/src/xpress_compress.c +++ b/src/xpress_compress.c @@ -920,7 +920,8 @@ xpress_find_matches(struct xpress_compressor * restrict c, /* If we've found so many matches that the cache might overflow * if we keep finding more, then stop finding matches. This * case is very unlikely. */ - if (unlikely(cache_ptr >= c->cache_overflow_mark || max_len < 5)) + if (unlikely(cache_ptr >= c->cache_overflow_mark || + max_len < BT_MATCHFINDER_REQUIRED_NBYTES)) break; matches = cache_ptr; @@ -955,7 +956,8 @@ xpress_find_matches(struct xpress_compressor * restrict c, * highly compressible, so it doesn't matter as much what we do. */ if (best_len >= nice_len) { - if (unlikely(best_len + 5 >= max_len)) + if (unlikely(best_len + + BT_MATCHFINDER_REQUIRED_NBYTES >= max_len)) break; --best_len; do { @@ -1090,12 +1092,12 @@ xpress_create_compressor(size_t max_bufsize, unsigned compression_level, if (compression_level < 30) { c->impl = xpress_compress_greedy; - c->max_search_depth = (compression_level * 24) / 16; - c->nice_match_length = (compression_level * 48) / 16; + c->max_search_depth = (compression_level * 30) / 16; + c->nice_match_length = (compression_level * 60) / 16; } else { c->impl = xpress_compress_lazy; - c->max_search_depth = (compression_level * 24) / 32; - c->nice_match_length = (compression_level * 48) / 32; + c->max_search_depth = (compression_level * 30) / 32; + c->nice_match_length = (compression_level * 60) / 32; /* xpress_compress_lazy() needs max_search_depth >= 2 * because it halves the max_search_depth when @@ -1122,8 +1124,8 @@ xpress_create_compressor(size_t max_bufsize, unsigned compression_level, &c->match_cache[max_bufsize * CACHE_RESERVE_PER_POS]; c->impl = xpress_compress_near_optimal; - c->max_search_depth = (compression_level * 32) / 100; - c->nice_match_length = (compression_level * 50) / 100; + c->max_search_depth = (compression_level * 28) / 100; + c->nice_match_length = (compression_level * 56) / 100; c->num_optim_passes = compression_level / 40; } #endif /* SUPPORT_NEAR_OPTIMAL_PARSING */