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:
parent
49957f2536
commit
82321d7370
2 changed files with 25 additions and 25 deletions
|
|
@ -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}"
|
||||||
|
|
|
||||||
|
|
@ -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)))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue