This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-08-01
Channels
- # announcements (1)
- # beginners (71)
- # calva (12)
- # cider (3)
- # clj-kondo (12)
- # cljsrn (9)
- # clojure (167)
- # clojure-dev (21)
- # clojure-europe (5)
- # clojure-italy (60)
- # clojure-nl (6)
- # clojure-spec (6)
- # clojure-uk (60)
- # clojurescript (86)
- # core-async (25)
- # cursive (21)
- # datascript (9)
- # datomic (4)
- # figwheel (8)
- # fulcro (7)
- # graalvm (4)
- # jackdaw (6)
- # jobs (8)
- # juxt (2)
- # leiningen (1)
- # malli (1)
- # off-topic (20)
- # re-frame (31)
- # reagent (5)
- # remote-jobs (3)
- # shadow-cljs (57)
- # sql (6)
- # vim (9)
(defn composite-perf2 []
(let [tests [[true [-1]]
[true [-1 1 2]]
[false [-1 0 2]]
[false [-1 -1 -1 -1]]]
assert! (fn [f]
(doseq [[expected data] tests]
(assert (= expected (f data)))))]
;; 155ns
(let [valid? (fn [x]
(and (vector? x)
(<= (count x) 3)
(every? #(and (int? %) (or (pos-int? %) (neg-int? %))) x)))]
(assert! valid?)
(cc/quick-bench
(valid? [-1 1 2])))
;; 27ns
(let [valid? (m/validator
[:vector {:max 3}
[:and int? [:or pos-int? neg-int?]]])]
(assert! valid?)
(cc/quick-bench
(valid? [-1 1 2])))
;; 506ns
(let [spec (s/coll-of
(s/and int? (s/or :pos-int pos-int? :neg-int neg-int?))
:kind vector?
:max-count 3)
valid? (partial s/valid? spec)]
(assert! valid?)
(cc/quick-bench
(valid? [-1 1 2])))))