From 33eee786be8788701d07a6388782b61ba5bad3c5 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Sat, 19 Oct 2013 18:13:23 +0700 Subject: [PATCH] Lower default LZMA2 compression level -> 0 (much better perf @ ~same ratio) --- benchmarks.png | Bin 21083 -> 21218 bytes src/taoensso/nippy/benchmarks.clj | 2 +- src/taoensso/nippy/compression.clj | 10 +++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmarks.png b/benchmarks.png index ffd885827075ad9c290d81a169292d3d52e9f351..35f38ad805cc2bbda66441e8c6e458b80383f697 100644 GIT binary patch literal 21218 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 T*Sx7XOtoJb-$GR&-J|{l(N!U( literal 21083 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 diff --git a/src/taoensso/nippy/benchmarks.clj b/src/taoensso/nippy/benchmarks.clj index 9dfafad..06d8b20 100644 --- a/src/taoensso/nippy/benchmarks.clj +++ b/src/taoensso/nippy/benchmarks.clj @@ -51,7 +51,7 @@ ;; {:default {:round 3632, :freeze 2349, :thaw 1283, :size 12369}} ;; {:encrypted {:round 6970, :freeze 4073, :thaw 2897, :size 12388}} ;; {:fast {:round 3294, :freeze 2109, :thaw 1185, :size 13277}} - ;; {:lzma2 {:round 145301, :freeze 123650, :thaw 21651, :size 9024}} + ;; {:lzma2 {:round 44590, :freeze 29567, :thaw 15023, :size 9076}} ;;; 11 Oct 2013: Nippy v2.2.0, with both ztellman mods ;; {:defaults {:round 4319, :freeze 2950, :thaw 1446, :data-size 12369}} diff --git a/src/taoensso/nippy/compression.clj b/src/taoensso/nippy/compression.clj index 457affb..0a88531 100644 --- a/src/taoensso/nippy/compression.clj +++ b/src/taoensso/nippy/compression.clj @@ -28,7 +28,7 @@ (->SnappyCompressor)) (deftype LZMA2Compressor [compression-level] - ;; Compression level ∈ℕ[0,9] (low->high) with 6 LZMA2 default (we use 4) + ;; Compression level ∈ℕ[0,9] (low->high) with 6 LZMA2 default (we use 0) ICompressor (compress [_ ba] (let [ba-len (alength ^bytes ba) @@ -55,8 +55,8 @@ "Alpha - subject to change. Default org.tukaani.xz.LZMA2 compressor: Ratio: high. - Write speed: very slow. - Read speed: medium. + Write speed: _very_ slow (also currently single-threaded). + Read speed: slow. - A specialized compressor for large, low-write, high-read data." - (->LZMA2Compressor 4)) + A specialized compressor for large, low-write data." + (->LZMA2Compressor 0))