DL
Size: a a a
DL
ST
(let [x 4 path [1 2 3]]
(into [] (dedupe) (conj path x)))
ST
(let [x 4 path [1 2 3]]
(into [] (dedupe) (conj path x)))
(let [x 4 path [1 2 3]]
(cond-> path (nil? (some (partial = x) path)) (conj x)))
#{x}
не самый шустрый вариантD
(let [x 4 path [1 2 3]]
(into [] (dedupe) (conj path x)))
ST
(let [x 4 path [1 2 3]]
(cond-> path (nil? (some #(== x %) path)) (conj x)))
DL
(let [x 4 path [1 2 3]]
(cond-> path (nil? (some (partial = x) path)) (conj x)))
#{x}
не самый шустрый вариантST
DL
ИФ
DL
(let [path (take 1000000 (repeatedly #(rand-int 100)))
x (rand-int 100)
a (time (cond-> path
(nil? (some (partial = x) path)) (conj x)))
b (time (into [] (dedupe) (conj path x)))])
ST
(let [path (take 1000000 (repeatedly #(rand-int 100)))
x (rand-int 100)
a (time (cond-> path
(nil? (some (partial = x) path)) (conj x)))
b (time (into [] (dedupe) (conj path x)))])
a
ленивое и не реализуется, как я понимаюST
(let [path (take 1000000 (repeatedly #(rand-int 100)))
x (rand-int 100)
a (time (cond-> path
(nil? (some (partial = x) path)) (conj x)))
b (time (into [] (dedupe) (conj path x)))])
DL
D
DL
ST
DL
ST
x
... 😊DL
ST
x
... 😊(let [path (into [] (take 1000000 (repeatedly #(rand-int 100))))
x 101
a (time (cond-> path
(nil? (some #(== x %) path)) (conj x)))
b (time (into [] (dedupe) (conj path x)))])
"Elapsed time: 62.1621 msecs"
"Elapsed time: 43.835101 msecs"