From 22de983183e1e86969dedb384f640356d030acb1 Mon Sep 17 00:00:00 2001 From: Klaus Post Date: Sun, 16 Jan 2022 05:14:41 -0800 Subject: [PATCH] zstd: Add bigger default blocks (#469) Keep 64K blocks for fastest, but do max size for others. Healthy compression increase for streams. --- zstd/encoder_options.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/zstd/encoder_options.go b/zstd/encoder_options.go index 7d29e1d689..c7f709ef18 100644 --- a/zstd/encoder_options.go +++ b/zstd/encoder_options.go @@ -24,6 +24,7 @@ type encoderOptions struct { allLitEntropy bool customWindow bool customALEntropy bool + customBlockSize bool lowMem bool dict *dict } @@ -33,7 +34,7 @@ func (o *encoderOptions) setDefault() { concurrent: runtime.GOMAXPROCS(0), crc: true, single: nil, - blockSize: 1 << 16, + blockSize: maxCompressedBlockSize, windowSize: 8 << 20, level: SpeedDefault, allLitEntropy: true, @@ -106,6 +107,7 @@ func WithWindowSize(n int) EOption { o.customWindow = true if o.blockSize > o.windowSize { o.blockSize = o.windowSize + o.customBlockSize = true } return nil } @@ -222,6 +224,9 @@ func WithEncoderLevel(l EncoderLevel) EOption { switch o.level { case SpeedFastest: o.windowSize = 4 << 20 + if !o.customBlockSize { + o.blockSize = 1 << 16 + } case SpeedDefault: o.windowSize = 8 << 20 case SpeedBetterCompression: