From 7843b42e19cba805c71f1e684e42747b76983ec7 Mon Sep 17 00:00:00 2001 From: Shantanu Kumar Date: Sat, 6 Jun 2015 20:05:33 +0530 Subject: [PATCH] add criterium-basd perf tests using citius --- project.clj | 2 + test-perf/taoensso/nippy/test_perf.clj | 70 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 test-perf/taoensso/nippy/test_perf.clj diff --git a/project.clj b/project.clj index 40cad9c..778a0d9 100644 --- a/project.clj +++ b/project.clj @@ -31,6 +31,8 @@ ;; [com.cemerick/double-check "0.6.1"] [org.clojure/data.fressian "0.2.0"] [org.xerial.snappy/snappy-java "1.1.1.7"]]} + :perf {:dependencies [[citius "0.1.1"]] + :test-paths ^:replace ["test-perf"]} :dev [:1.7 :test {:plugins [[lein-pprint "1.1.1"] diff --git a/test-perf/taoensso/nippy/test_perf.clj b/test-perf/taoensso/nippy/test_perf.clj new file mode 100644 index 0000000..e3e0a27 --- /dev/null +++ b/test-perf/taoensso/nippy/test_perf.clj @@ -0,0 +1,70 @@ +(ns taoensso.nippy.test-perf + (:require + [clojure.test :refer [deftest is testing use-fixtures]] + [citius.core :as c] + [clojure.tools.reader.edn :as edn] + [clojure.data.fressian :as fressian] + [taoensso.nippy :as nippy])) + + +(def data nippy/stress-data-benchable) + + +(defn fressian-freeze [value] + (let [^java.nio.ByteBuffer bb (fressian/write value) + len (.remaining bb) + ba (byte-array len)] + (.get bb ba 0 len) + ba)) + + +(defn fressian-thaw [value] + (let [bb (java.nio.ByteBuffer/wrap value)] + (fressian/read bb))) + + +(use-fixtures :once (c/make-bench-wrapper + ["tools.reader.edn" "data.fressian" "Nippy-default" "Nippy-fast" "Nippy-encrypted" "Nippy-lzma2"] + {:chart-title "Nippy" + :chart-filename (format "bench-clj-%s.png" c/clojure-version-str)})) + + +(deftest test-roundtrip + (c/compare-perf "Roundtrip" + (edn/read-string (pr-str data)) + (fressian-thaw (fressian-freeze data)) + (nippy/thaw (nippy/freeze data)) + (nippy/thaw (nippy/freeze data {:compressor nil + :skip-header? true}) {:compressor nil + :encryptor nil}) + (nippy/thaw (nippy/freeze data {:password [:cached "p"]}) {:password [:cached "p"]}) + (nippy/thaw (nippy/freeze data {:compressor nippy/lzma2-compressor}) {:compressor nippy/lzma2-compressor}))) + + +(deftest test-freeze + (c/compare-perf "Freeze" + (pr-str data) + (fressian-freeze data) + (nippy/freeze data) + (nippy/freeze data {:compressor nil + :skip-header? true}) + (nippy/freeze data {:password [:cached "p"]}) + (nippy/freeze data {:compressor nippy/lzma2-compressor}))) + + +(deftest test-thaw + (let [edn-frozen (pr-str data) + fressian-frozen (fressian-freeze data) + nippy-frozen (nippy/freeze data) + nippy-frozen-fast (nippy/freeze data {:compressor nil + :skip-header? true}) + nippy-frozen-encr (nippy/freeze data {:password [:cached "p"]}) + nippy-frozen-lzma2 (nippy/freeze data {:compressor nippy/lzma2-compressor})] + (c/compare-perf "Thaw" + (edn/read-string edn-frozen) + (fressian-thaw fressian-frozen) + (nippy/thaw nippy-frozen) + (nippy/thaw nippy-frozen-fast {:compressor nil + :encryptor nil}) + (nippy/thaw nippy-frozen-encr {:password [:cached "p"]}) + (nippy/thaw nippy-frozen-lzma2 {:compressor nippy/lzma2-compressor}))))