СС
Size: a a a
СС
ST
juxt
(->>
darts-numbers
(partition 3 1)
(map (juxt
(partial string/join "-")
(partial apply +)))
(into {})
(apply max-key val))
ST
(->>
darts-numbers
(partition 3 1)
(map #([(clojure.string/join "-" %) (apply + %)]))
(apply max-key second))
Wrong number of args (0) passed to: clojure.lang.PersistentVector
(->>
darts-numbers
(partition 3 1)
(sort-by (partial apply +) >)
first)
=> (19 7 16)
ST
(->>
darts-numbers
(partition 3 1)
(sort-by (partial apply +) >)
first)
=> (19 7 16)
T
T
juxt
(->>
darts-numbers
(partition 3 1)
(map (juxt
(partial string/join "-")
(partial apply +)))
(into {})
(apply max-key val))
ST
ST
T
T
DF
DF
AK
ST
ST
parallelism
на 1e8 и смотриST
cbu-bound-sum
ты можешь выиграть немного времени. Но когда в дело вступает работа с коллекциями размером десятки миллионов, то тормозить начинает в других местах. Поэтому я тебя и спрашивал, откуда и как поступают данные для обработки.(defn cbu-bound-sum
[n]
(loop [i (int 0)
n (int n)]
(if (pos? n)
(recur (unchecked-inc i) (unchecked-dec n))
i)))
=> #'dev.probe/cbu-bound-sum
(criterium/quick-bench
(loop [i (int 0)
n (int 1000)]
(if (pos? n)
(recur (unchecked-add i (cbu-bound-sum 100000)) (unchecked-dec n))
i)))
Evaluation count : 24 in 6 samples of 4 calls.
Execution time mean : 29,806815 ms
Execution time std-deviation : 835,762971 µs
Execution time lower quantile : 29,107323 ms ( 2,5%)
Execution time upper quantile : 31,076411 ms (97,5%)
Overhead used : 1,758432 ns
=> nil
(criterium/quick-bench
(let [acc (java.util.concurrent.atomic.LongAdder.)
limit 1e8
parallelism 1000
adding (long (/ limit parallelism))]
(dotimes [_ parallelism]
(.add acc (cbu-bound-sum adding)))
(.sum acc)))
Evaluation count : 12 in 6 samples of 2 calls.
Execution time mean : 60,477632 ms
Execution time std-deviation : 554,677132 µs
Execution time lower quantile : 60,097199 ms ( 2,5%)
Execution time upper quantile : 61,249817 ms (97,5%)
Overhead used : 1,758432 ns
=> nil
(criterium/quick-bench
(let [acc (java.util.concurrent.atomic.LongAdder.)
limit 1e8
parallelism 1000
adding (long (/ limit parallelism))
done-signal (java.util.concurrent.CountDownLatch. parallelism)]
(dotimes [_ parallelism]
(async/go
(.add acc (cbu-bound-sum adding))
(.countDown done-signal)
:done))
(.await done-signal)
(.sum acc)))
Evaluation count : 84 in 6 samples of 14 calls.
Execution time mean : 7,178148 ms
Execution time std-deviation : 125,635914 µs
Execution time lower quantile : 7,092377 ms ( 2,5%)
Execution time upper quantile : 7,394825 ms (97,5%)
Overhead used : 1,758432 ns
Found 1 outliers in 6 samples (16,6667 %)
low-severe 1 (16,6667 %)
Variance from outliers : 13,8889 % Variance is moderately inflated by outliers
=> nil
DF
DF
ST