mirror of
https://github.com/facebook/zstd.git
synced 2025-10-04 00:02:33 -04:00
[linux] Opt out of row based match finder for the kernel
The row based match finder is slower without SIMD. We used to detect the presence of SIMD to set the lower bound to 17, but that breaks determinism. Instead, specifically opt into it for the kernel, because it is one of the rare cases that doesn't have SIMD support.
This commit is contained in:
parent
b27ba56a6d
commit
68dfd14a8c
@ -237,10 +237,18 @@ static int ZSTD_rowMatchFinderUsed(const ZSTD_strategy strategy, const ZSTD_Para
|
||||
/* Returns row matchfinder usage given an initial mode and cParams */
|
||||
static ZSTD_ParamSwitch_e ZSTD_resolveRowMatchFinderMode(ZSTD_ParamSwitch_e mode,
|
||||
const ZSTD_compressionParameters* const cParams) {
|
||||
#ifdef ZSTD_LINUX_KERNEL
|
||||
/* The Linux Kernel does not use SIMD, and 128KB is a very common size, e.g. in BtrFS.
|
||||
* The row match finder is slower for this size without SIMD, so disable it.
|
||||
*/
|
||||
const unsigned kWindowLogLowerBound = 17;
|
||||
#else
|
||||
const unsigned kWindowLogLowerBound = 14;
|
||||
#endif
|
||||
if (mode != ZSTD_ps_auto) return mode; /* if requested enabled, but no SIMD, we still will use row matchfinder */
|
||||
mode = ZSTD_ps_disable;
|
||||
if (!ZSTD_rowMatchFinderSupported(cParams->strategy)) return mode;
|
||||
if (cParams->windowLog > 14) mode = ZSTD_ps_enable;
|
||||
if (cParams->windowLog > kWindowLogLowerBound) mode = ZSTD_ps_enable;
|
||||
return mode;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user