dynamic bucket sizes
This commit is contained in:
+10
-2
@@ -16,7 +16,7 @@
|
|||||||
#include "zstd_double_fast.h" /* ZSTD_fillDoubleHashTable() */
|
#include "zstd_double_fast.h" /* ZSTD_fillDoubleHashTable() */
|
||||||
#include "zstd_ldm_geartab.h"
|
#include "zstd_ldm_geartab.h"
|
||||||
|
|
||||||
#define LDM_BUCKET_SIZE_LOG 3
|
#define LDM_BUCKET_SIZE_LOG 4
|
||||||
#define LDM_MIN_MATCH_LENGTH 64
|
#define LDM_MIN_MATCH_LENGTH 64
|
||||||
#define LDM_HASH_RLOG 7
|
#define LDM_HASH_RLOG 7
|
||||||
|
|
||||||
@@ -138,7 +138,6 @@ void ZSTD_ldm_adjustParameters(ldmParams_t* params,
|
|||||||
params->windowLog = cParams->windowLog;
|
params->windowLog = cParams->windowLog;
|
||||||
ZSTD_STATIC_ASSERT(LDM_BUCKET_SIZE_LOG <= ZSTD_LDM_BUCKETSIZELOG_MAX);
|
ZSTD_STATIC_ASSERT(LDM_BUCKET_SIZE_LOG <= ZSTD_LDM_BUCKETSIZELOG_MAX);
|
||||||
DEBUGLOG(4, "ZSTD_ldm_adjustParameters");
|
DEBUGLOG(4, "ZSTD_ldm_adjustParameters");
|
||||||
if (!params->bucketSizeLog) params->bucketSizeLog = LDM_BUCKET_SIZE_LOG;
|
|
||||||
if (params->hashRateLog == 0) {
|
if (params->hashRateLog == 0) {
|
||||||
assert(1 <= (int)cParams->strategy && (int)cParams->strategy <= 9);
|
assert(1 <= (int)cParams->strategy && (int)cParams->strategy <= 9);
|
||||||
/* mapping: strat1 -> rate8 ... strat9 -> rate4*/
|
/* mapping: strat1 -> rate8 ... strat9 -> rate4*/
|
||||||
@@ -152,6 +151,15 @@ void ZSTD_ldm_adjustParameters(ldmParams_t* params,
|
|||||||
params->minMatchLength = (params->hashRateLog < 6) ?
|
params->minMatchLength = (params->hashRateLog < 6) ?
|
||||||
LDM_MIN_MATCH_LENGTH :
|
LDM_MIN_MATCH_LENGTH :
|
||||||
LDM_MIN_MATCH_LENGTH * 2;
|
LDM_MIN_MATCH_LENGTH * 2;
|
||||||
|
if (cParams->strategy >= ZSTD_btultra2)
|
||||||
|
params->minMatchLength /= 2;
|
||||||
|
}
|
||||||
|
if (params->bucketSizeLog==0) {
|
||||||
|
params->bucketSizeLog = LDM_BUCKET_SIZE_LOG;
|
||||||
|
if (cParams->strategy > ZSTD_lazy) {
|
||||||
|
params->bucketSizeLog += (U32)cParams->strategy - (U32)ZSTD_lazy;
|
||||||
|
}
|
||||||
|
params->bucketSizeLog = MIN(params->bucketSizeLog, ZSTD_LDM_BUCKETSIZELOG_MAX);
|
||||||
}
|
}
|
||||||
params->bucketSizeLog = MIN(params->bucketSizeLog, params->hashLog);
|
params->bucketSizeLog = MIN(params->bucketSizeLog, params->hashLog);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user