isolate desired operations to test in transient benchmarks and make the comparisons work on identical data, add transient namespace for doc generation

This commit is contained in:
Nathan Marz 2016-06-08 06:02:41 -04:00
parent 49957f2536
commit 82321d7370
2 changed files with 25 additions and 25 deletions

View file

@ -15,7 +15,8 @@
:namespaces [com.rpl.specter :namespaces [com.rpl.specter
com.rpl.specter.macros com.rpl.specter.macros
com.rpl.specter.zipper com.rpl.specter.zipper
com.rpl.specter.protocols] com.rpl.specter.protocols
com.rpl.specter.transient]
:source-uri :source-uri
{#"target/classes" "https://github.com/nathanmarz/specter/tree/{version}/src/clj/{classpath}x#L{line}" {#"target/classes" "https://github.com/nathanmarz/specter/tree/{version}/src/clj/{classpath}x#L{line}"
#".*" "https://github.com/nathanmarz/specter/tree/{version}/src/clj/{classpath}#L{line}" #".*" "https://github.com/nathanmarz/specter/tree/{version}/src/clj/{classpath}#L{line}"

View file

@ -154,36 +154,36 @@
(tree-value-transform (fn [e] (if (even? e) (inc e) e)) data) (tree-value-transform (fn [e] (if (even? e) (inc e) e)) data)
)) ))
(let [toappend (range 1000)]
(run-benchmark "transient comparison: building up vectors" (run-benchmark "transient comparison: building up vectors"
6
10000 10000
(reduce (fn [v i] (conj v i)) [] (range 1000)) (reduce (fn [v i] (conj v i)) [] toappend)
(reduce (fn [v i] (conj! v i)) (transient []) (range 1000)) (reduce (fn [v i] (conj! v i)) (transient []) toappend)
;; uncomment this when END is fast (setval END toappend [])
#_(reduce (fn [v i] (setval [END] [i] v)) [] (range 1000)) (setval END! toappend (transient []))))
(setval [END!] (range 1000) (transient []))
(reduce (fn [v i] (setval [END!] [i] v)) (transient []) (range 1000)))
(let [data (vec (range 1000)) (let [data (vec (range 1000))
tdata (transient data)] tdata (transient data)
tdata2 (transient data)
idx 600]
(run-benchmark "transient comparison: assoc'ing in vectors" (run-benchmark "transient comparison: assoc'ing in vectors"
6
500000 500000
(assoc data (rand-int 1000) 0) (assoc data idx 0)
(assoc! tdata (rand-int 1000) 0) (assoc! tdata idx 0)
(setval [(keypath (rand-int 1000))] 0 data) (setval (keypath idx) 0 data)
(setval [(keypath! (rand-int 1000))] 0 tdata))) (setval (keypath! idx) 0 tdata2)))
(let [data (into {} (for [k (range 1000)] (let [data (into {} (for [k (range 1000)]
[k (rand)])) [k (rand)]))
tdata (transient data)] tdata (transient data)
tdata2 (transient data)
idx 600]
(run-benchmark "transient comparison: assoc'ing in maps" (run-benchmark "transient comparison: assoc'ing in maps"
6
500000 500000
(assoc data (rand-int 1000) 0) (assoc data idx 0)
(assoc! tdata (rand-int 1000) 0) (assoc! tdata idx 0)
(setval [(keypath (rand-int 1000))] 0 data) (setval (keypath idx) 0 data)
(setval [(keypath! (rand-int 1000))] 0 tdata))) (setval (keypath! idx) 0 tdata2)))
(defn modify-submap (defn modify-submap
[m] [m]
@ -193,7 +193,6 @@
[k (rand)])) [k (rand)]))
tdata (transient data)] tdata (transient data)]
(run-benchmark "transient comparison: submap" (run-benchmark "transient comparison: submap"
6
300000 300000
(transform [(submap [(rand-int 1000)])] modify-submap data) (transform (submap [600 700]) modify-submap data)
(transform [(submap! [(rand-int 1000)])] modify-submap tdata))) (transform (submap! [600 700]) modify-submap tdata)))