xz/speedup.patch
Alexander Stefanov b91a1afb7a addd patches
2020-03-06 10:30:44 +00:00

43 lines
1.1 KiB
Diff

diff -Naru xz-5.2.3/src/liblzma/lz/lz_encoder_mf.c xz-5.2.3.tpg/src/liblzma/lz/lz_encoder_mf.c
--- xz-5.2.3/src/liblzma/lz/lz_encoder_mf.c 2016-12-30 11:08:20.000000000 +0000
+++ xz-5.2.3.tpg/src/liblzma/lz/lz_encoder_mf.c 2017-10-23 15:45:34.970539050 +0000
@@ -464,22 +464,22 @@
uint32_t len0 = 0;
uint32_t len1 = 0;
+ uint32_t len2 = 0;
while (true) {
const uint32_t delta = pos - cur_match;
+ uint32_t len = len2;
if (depth-- == 0 || delta >= cyclic_size) {
*ptr0 = EMPTY_HASH_VALUE;
*ptr1 = EMPTY_HASH_VALUE;
return matches;
}
+ const uint8_t *const pb = cur - delta;
uint32_t *const pair = son + ((cyclic_pos - delta
+ (delta > cyclic_pos ? cyclic_size : 0))
<< 1);
- const uint8_t *const pb = cur - delta;
- uint32_t len = my_min(len0, len1);
-
if (pb[len] == cur[len]) {
len = lzma_memcmplen(pb, cur, len + 1, len_limit);
@@ -502,11 +502,13 @@
ptr1 = pair + 1;
cur_match = *ptr1;
len1 = len;
+ len2 = my_min(len0, len1);
} else {
*ptr0 = cur_match;
ptr0 = pair;
cur_match = *ptr0;
len0 = len;
+ len2 = my_min(len0, len1);
}
}
}