From b227bc4864de81190e1f8f32af5d8a41ebd58893 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Mon, 15 Jan 2024 12:45:21 +0100 Subject: [PATCH] [new] [#164] Update benchmarks --- README.md | 7 +- benchmarks.png | Bin 130438 -> 69573 bytes test/taoensso/nippy_benchmarks.clj | 184 +++++++++++++++++------------ test/taoensso/nippy_tests.clj | 3 +- 4 files changed, 110 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index 7fb02b32..14f425cb 100644 --- a/README.md +++ b/README.md @@ -38,15 +38,10 @@ See [here][GitHub releases] for earlier releases. ## Performance -Since its earliest versions, Nippy has consistently been the **fastest serialization library for Clojure** that I'm aware of. It offers: - -- Roundtrip times **>12x faster** than `tools.reader` with **60% smaller** data size. -- Roundtrip times **>2x faster** than `data.fressian` with **30% smaller** data size. +Since its earliest versions, Nippy has consistently been the **fastest serialization library for Clojure** that I'm aware of. Latest [benchmark](../../blob/master/test/taoensso/nippy_benchmarks.clj) results: ![benchmarks-png](../../raw/master/benchmarks.png) -The [benchmark code](../../blob/master/test/taoensso/nippy_benchmarks.clj) can be easily run in your own environment. - ## Documentation - [Wiki][GitHub wiki] (getting started, usage, etc.) diff --git a/benchmarks.png b/benchmarks.png index 03112d754dcb6ecb5d09a70dbaa48c386133eab2..7fcedfb307c8b2192716f4178b6ac36262759011 100644 GIT binary patch literal 69573 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 diff --git a/test/taoensso/nippy_benchmarks.clj b/test/taoensso/nippy_benchmarks.clj index f5d83781..311052e8 100644 --- a/test/taoensso/nippy_benchmarks.clj +++ b/test/taoensso/nippy_benchmarks.clj @@ -25,9 +25,9 @@ (comment (-> data freeze-fress thaw-fress)) -;;;; Benchable data +;;;; Bench data -(def bench-data +(def default-bench-data "Subset of stress data suitable for benching." (let [sd (nippy/stress-data {:comparable? true})] (reduce-kv @@ -42,12 +42,18 @@ (comment (clojure.set/difference (set (keys (nippy/stress-data {:comparable? true}))) - (set (keys bench-data)))) + (set (keys default-bench-data)))) -;;;; +;;;; Serialization + +(defn- bench1-serialization + [freezer thawer sizer + {:keys [laps warmup bench-data] + :or + {laps 1e4 + warmup 25e3 + bench-data default-bench-data}}] -(defn- bench1 - [{:keys [laps warmup] :or {laps 1e4, warmup 25e3}} freezer thawer sizer] (let [data-frozen (freezer bench-data) time-freeze (enc/bench laps {:warmup-laps warmup} (freezer bench-data)) time-thaw (enc/bench laps {:warmup-laps warmup} (thawer data-frozen)) @@ -58,90 +64,90 @@ :thaw time-thaw :size data-size})) -(comment (bench1 {} nippy/freeze nippy/thaw count)) +(comment (bench1-serialization nippy/freeze nippy/thaw count {})) + +(defn- printed-results [results] + (println "\nBenchmark results:") + (doseq [[k v] results] (println k " " v)) + (do results)) -(defn bench - [{:keys [all? reader? fressian? fressian? lzma2? laps warmup] - :or {laps 1e4 - warmup 25e3}}] +(defn bench-serialization + [{:keys [all? reader? fressian? fressian? lzma2? laps warmup bench-data] + :as opts + :or + {laps 1e4 + warmup 25e3}}] (println "\nStarting benchmarks") (let [results_ (atom {})] (when (or all? reader?) - (println "Benching Reader...") + (println "- Benching Reader...") (swap! results_ assoc :reader - (bench1 {:laps laps, :warmup warmup} - freeze-reader thaw-reader - (fn [^String s] (count (.getBytes s "UTF-8")))))) + (bench1-serialization freeze-reader thaw-reader + (fn [^String s] (count (.getBytes s "UTF-8"))) + (assoc opts :laps laps, :warmup warmup)))) (when (or all? fressian?) (println "- Benching Fressian...") - (swap! results_ assoc :fressian (bench1 {:laps laps, :warmup warmup} freeze-fress thaw-fress count))) + (swap! results_ assoc :fressian + (bench1-serialization freeze-fress thaw-fress count + (assoc opts :laps laps, :warmup warmup)))) (when (or all? lzma2?) (println "- Benching Nippy/LZMA2...") (swap! results_ assoc :nippy/lzma2 - (bench1 {:laps laps, :warmup warmup} + (bench1-serialization #(nippy/freeze % {:compressor nippy/lzma2-compressor}) #(nippy/thaw % {:compressor nippy/lzma2-compressor}) - count))) + count + (assoc opts :laps laps, :warmup warmup)))) (println "- Benching Nippy/encrypted...") (swap! results_ assoc :nippy/encrypted - (bench1 {:laps laps, :warmup warmup} + (bench1-serialization #(nippy/freeze % {:password [:cached "p"]}) #(nippy/thaw % {:password [:cached "p"]}) - count)) + count + (assoc opts :laps laps, :warmup warmup))) (println "- Benching Nippy/default...") - (swap! results_ assoc :nippy/default (bench1 {:laps laps, :warmup warmup} nippy/freeze nippy/thaw count)) + (swap! results_ assoc :nippy/default + (bench1-serialization nippy/freeze nippy/thaw count + (assoc opts :laps laps, :warmup warmup))) (println "- Benching Nippy/fast...") - (swap! results_ assoc :nippy/fast (bench1 {:laps laps, :warmup warmup} nippy/fast-freeze nippy/fast-thaw count)) + (swap! results_ assoc :nippy/fast + (bench1-serialization nippy/fast-freeze nippy/fast-thaw count + (assoc opts :laps laps, :warmup warmup))) (println "- Benchmarks complete! (Time for cake?)") - - (let [results @results_] - (println "\nBenchmark results:") - (doseq [[k v] results] (println k " " v)) - (do results)))) - -(comment - (do - (set! *unchecked-math* false) - (bench {:all? true})) - - ;; 2023 Sep 25, 2020 Apple MBP M1 - ;; [com.taoensso/nippy "3.2.0"] - ;; [org.clojure/tools.reader "1.3.6"] - ;; [org.clojure/data.fressian "1.0.0"] - - {:reader {:round 36756, :freeze 6567, :thaw 30189, :size 39374} - :fressian {:round 6579, :freeze 3720, :thaw 2859, :size 22850} - :nippy/lzma2 {:round 33645, :freeze 20411, :thaw 13234, :size 11420} - :nippy/encrypted {:round 3894, :freeze 2260, :thaw 1634, :size 16717} - :nippy/default {:round 2796, :freeze 1467, :thaw 1329, :size 16689} - :nippy/fast {:round 2516, :freeze 1271, :thaw 1245, :size 28454}}) - -;;;; Compressors - -(let [bench-data (nippy/freeze (nippy/stress-data {:comparable? true}) {:compressor nil})] - - (defn bench1-compressor - [{:keys [laps warmup] :or {laps 1e4, warmup 2e4}} compressor] - (let [data-compressed (compr/compress compressor bench-data) - time-compress (enc/bench laps {:warmup-laps warmup} (compr/compress compressor bench-data)) - time-decompress (enc/bench laps {:warmup-laps warmup} (compr/decompress compressor data-compressed))] - - {:round (+ time-compress time-decompress) - :compress time-compress - :decompress time-decompress - :ratio (enc/round2 (/ (count data-compressed) (count bench-data)))})) - - (defn bench-compressors [bench1-opts lzma-opts] + (printed-results @results_))) + +;;;; Compression + +(defn- bench1-compressor + [compressor + {:keys [laps warmup bench-data] + :or + {laps 1e4 + warmup 2e4 + bench-data default-bench-data}}] + + (let [data-frozen (nippy/freeze bench-data {:compressor nil}) + data-compressed (compr/compress compressor data-frozen) + time-compress (enc/bench laps {:warmup-laps warmup} (compr/compress compressor data-frozen)) + time-decompress (enc/bench laps {:warmup-laps warmup} (compr/decompress compressor data-compressed))] + + {:round (+ time-compress time-decompress) + :compress time-compress + :decompress time-decompress + :ratio (enc/round2 (/ (count data-compressed) (count data-frozen)))})) + +(defn bench-compressors [opts lzma-opts] + (printed-results (merge - (let [bench1 #(bench1-compressor bench1-opts %)] + (let [bench1 #(bench1-compressor % opts)] {:zstd/prepended (bench1 (compr/->ZstdCompressor true)) :zstd/unprepended (bench1 (compr/->ZstdCompressor false)) :lz4 (bench1 (compr/->LZ4Compressor)) @@ -149,28 +155,52 @@ :snappy/prepended (bench1 (compr/->SnappyCompressor true)) :snappy/unprepended (bench1 (compr/->SnappyCompressor false))}) - (let [bench1 #(bench1-compressor (merge bench1-opts lzma-opts) %)] + (let [bench1 #(bench1-compressor % (merge opts lzma-opts))] {:lzma2/level0 (bench1 (compr/->LZMA2Compressor 0)) :lzma2/level3 (bench1 (compr/->LZMA2Compressor 3)) :lzma2/level6 (bench1 (compr/->LZMA2Compressor 6)) :lzma2/level9 (bench1 (compr/->LZMA2Compressor 9))})))) +;;;; Results + (comment + {:last-updated "2024-01-16" + :clojure-version "1.11.1" + :java-version "OpenJDK 21" + :deps + '[[com.taoensso/nippy "3.4.0-beta1"] + [org.clojure/tools.reader "1.3.7"] + [org.clojure/data.fressian "1.0.0"] + [org.tukaani/xz "1.9"] + [io.airlift/aircompressor "0.25"]]} + + (bench-serialization {:all? true}) + + {:reader {:round 13496, :freeze 5088, :thaw 8408, :size 15880} + :fressian {:round 3898, :freeze 2350, :thaw 1548, :size 12222} + :nippy/lzma2 {:round 12341, :freeze 7809, :thaw 4532, :size 3916} + :nippy/encrypted {:round 2939, :freeze 1505, :thaw 1434, :size 8547} + :nippy/default {:round 2704, :freeze 1330, :thaw 1374, :size 8519} + :nippy/fast {:round 2425, :freeze 1117, :thaw 1308, :size 17088}} + + (enc/round2 (/ 2704 13496)) ; 0.20 of reader roundtrip time + (enc/round2 (/ 2704 3898)) ; 0.69 of fressian roundtrip time + + (enc/round2 (/ 8519 15880)) ; 0.54 of reader output size + (enc/round2 (/ 8519 12222)) ; 0.70 of fressian output size + (bench-compressors {:laps 1e4 :warmup 2e4} {:laps 1e2 :warmup 2e2}) - ;; 2023 Aug 1, 2020 Apple MBP M1 - ;; [org.tukaani/xz "1.9"] - ;; [io.airlift/aircompressor "0.25"] - - {:zstd/prepended {:round 1672, :compress 1279, :decompress 393, :ratio 0.53} - :zstd/unprepended {:round 1668, :compress 1271, :decompress 397, :ratio 0.53} - :lz4 {:round 269, :compress 238, :decompress 31, :ratio 0.58} - :lzo {:round 259, :compress 216, :decompress 43, :ratio 0.58} - :snappy/prepended {:round 339, :compress 205, :decompress 134, :ratio 0.58} - :snappy/unprepended {:round 340, :compress 206, :decompress 134, :ratio 0.58} - :lzma2/level0 {:round 30300, :compress 18500, :decompress 11800, :ratio 0.4} - :lzma2/level3 {:round 49200, :compress 35700, :decompress 13500, :ratio 0.4} - :lzma2/level6 {:round 102600, :compress 86700, :decompress 15900, :ratio 0.41} - :lzma2/level9 {:round 434800, :compress 394700, :decompress 40100, :ratio 0.41}}) + ;; Note that ratio depends on compressibility of stress data + {:lz4 {:round 293, :compress 234, :decompress 59, :ratio 0.5} + :lzo {:round 483, :compress 349, :decompress 134, :ratio 0.46} + :snappy/prepended {:round 472, :compress 296, :decompress 176, :ratio 0.43} + :snappy/unprepended {:round 420, :compress 260, :decompress 160, :ratio 0.43} + :zstd/prepended {:round 2105, :compress 1419, :decompress 686, :ratio 0.3} + :zstd/unprepended {:round 1261, :compress 921, :decompress 340, :ratio 0.3} + :lzma2/level0 {:round 158, :compress 121, :decompress 37, :ratio 0.24} + :lzma2/level3 {:round 536, :compress 436, :decompress 100, :ratio 0.22} + :lzma2/level6 {:round 1136, :compress 1075, :decompress 61, :ratio 0.21} + :lzma2/level9 {:round 2391, :compress 2096, :decompress 295, :ratio 0.21}}) diff --git a/test/taoensso/nippy_tests.clj b/test/taoensso/nippy_tests.clj index 1845e838..d2852b78 100644 --- a/test/taoensso/nippy_tests.clj +++ b/test/taoensso/nippy_tests.clj @@ -436,4 +436,5 @@ ;;;; Benchmarks -(deftest _benchmarks (is (benchmarks/bench {}))) +(deftest _benchmarks + (is (benchmarks/bench-serialization {:all? true})))