Adjust Rabin parameters for chunksize > LZMA window size.
This commit is contained in:
parent
ea923b84f0
commit
172432698e
2 changed files with 4 additions and 3 deletions
|
@ -96,12 +96,12 @@ create_rabin_context(uint64_t chunksize, uint64_t real_chunksize, const char *al
|
|||
int level = 14;
|
||||
|
||||
/*
|
||||
* For LZMA we use 4K minimum Rabin block size. For everything else it
|
||||
* is 1K based on experimentation.
|
||||
* For LZMA with chunksize <= LZMA Window size we use 4K minimum Rabin
|
||||
* block size. For everything else it is 1K based on experimentation.
|
||||
*/
|
||||
ctx = (rabin_context_t *)slab_alloc(NULL, sizeof (rabin_context_t));
|
||||
ctx->rabin_poly_max_block_size = RAB_POLYNOMIAL_MAX_BLOCK_SIZE;
|
||||
if (memcmp(algo, "lzma", 4) == 0) {
|
||||
if (memcmp(algo, "lzma", 4) == 0 && chunksize <= LZMA_WINDOW_MAX) {
|
||||
ctx->rabin_poly_min_block_size = RAB_POLYNOMIAL_MIN_BLOCK_SIZE;
|
||||
ctx->rabin_avg_block_mask = RAB_POLYNOMIAL_AVG_BLOCK_MASK;
|
||||
ctx->rabin_poly_avg_block_size = RAB_POLYNOMIAL_AVG_BLOCK_SIZE;
|
||||
|
|
|
@ -79,6 +79,7 @@
|
|||
#define RAB_POLYNOMIAL_AVG_BLOCK_MASK2 (RAB_POLYNOMIAL_AVG_BLOCK_SIZE - 1)
|
||||
#define RAB_POLYNOMIAL_MIN_BLOCK_SIZE2 2048
|
||||
|
||||
#define LZMA_WINDOW_MAX (128L * 1024L * 1024L)
|
||||
#define RAB_POLYNOMIAL_WIN_SIZE 31
|
||||
#define RAB_POLYNOMIAL_MIN_WIN_SIZE 17
|
||||
#define RAB_POLYNOMIAL_MAX_WIN_SIZE 63
|
||||
|
|
Loading…
Reference in a new issue