Size: a a a

Clojure — русскоговорящее сообщество

2020 January 24

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
код бенчмарка. сорри за жаргон
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Mike Ananev
Leiningen работает как часы. но он использует maven под капотом для разрешения зависимостей.
Не знал, кстати, про это)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
Ну и бенчмаркать лезисек или через nth или через редьюс какой-нибудь, чтобы не разворачивать лист в памяти,
(defn x--i+i
 ([x] (x--i+i x 0))
 ([^long x ^long idx]
  (let [x' (+ x idx)]
    (lazy-seq (cons x' (x--i+i x' (inc idx)))))))
=> #'clojure-benchmarks.playground/x--i+i
(criterium/quick-bench
   (nth (x--i+i 0) 1000))
Evaluation count : 12594 in 6 samples of 2099 calls.
            Execution time mean : 48,247246 µs
   Execution time std-deviation : 487,938735 ns
  Execution time lower quantile : 47,700176 µs ( 2,5%)
  Execution time upper quantile : 48,999521 µs (97,5%)
                  Overhead used : 1,968342 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
(defn x--i+i-range
 []
 (->>
   (range)
   (map (fn [^long x]
          (quot (* x (inc x)) 2)))))
=> #'clojure-benchmarks.playground/x--i+i-range
(criterium/quick-bench
   (nth (x--i+i-range) 1000))
Evaluation count : 4170 in 6 samples of 695 calls.
            Execution time mean : 145,420024 µs
   Execution time std-deviation : 1,277100 µs
  Execution time lower quantile : 143,900767 µs ( 2,5%)
  Execution time upper quantile : 147,008824 µs (97,5%)
                  Overhead used : 1,968342 ns
=> nil
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
скопипасти кота если не трудно
жаргон, что «кот» это именно код бенчмарка, а не любой код?
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Sergey Trofimov
жаргон, что «кот» это именно код бенчмарка, а не любой код?
copy cat
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
не, кот в принципе, не обязательно бенчмарка )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
не, кот в принципе, не обязательно бенчмарка )
а, ну так про кота я понял значит
вопрос был какого именно кота
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну, здешнее большинство не против лигатур 😊
на текущий момент большинство за лигатуры
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
там вся функция - палка/веревка, пара умножений в мапе лезисека. не понимаю чему там тормозить в принципе.
другое дело, что по твоей чудо формуле nth можно посчитать мгновенно 😊
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
там вся функция - палка/веревка, пара умножений в мапе лезисека. не понимаю чему там тормозить в принципе.
ну как бы map и тормозит
(criterium/quick-bench
   (nth (range) 1000))
Evaluation count : 23718 in 6 samples of 3953 calls.
            Execution time mean : 25,178363 µs
   Execution time std-deviation : 105,525898 ns
  Execution time lower quantile : 24,995856 µs ( 2,5%)
  Execution time upper quantile : 25,274483 µs (97,5%)
                  Overhead used : 1,968342 ns
=> nil
(criterium/quick-bench
   (nth (map identity (range)) 1000))
Evaluation count : 4734 in 6 samples of 789 calls.
            Execution time mean : 132,612058 µs
   Execution time std-deviation : 5,464499 µs
  Execution time lower quantile : 127,618311 µs ( 2,5%)
  Execution time upper quantile : 141,045529 µs (97,5%)
                  Overhead used : 1,968342 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
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
да, я тоже проверил. хотел еще странсдьюсер по семме влепить и почекать, но руки не дошли
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
да, я тоже проверил. хотел еще странсдьюсер по семме влепить и почекать, но руки не дошли
у трансдьюсеров обвязка по-моему тяжелее мапа 😊
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
все, расстроили вы мою веру в ФП. буду лупапи с атомами писать
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
все, расстроили вы мою веру в ФП. буду лупапи с атомами писать
луп с атомом я не тестировал
с атомами не надо писать 😊
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ну в данном случае луп можно и без атом а с параметром. и сразу редьюсить, чтоб без лезисеков
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
ну в данном случае луп можно и без атом а с параметром. и сразу редьюсить, чтоб без лезисеков
ленивость была в условиях задачи
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
да, я тоже проверил. хотел еще странсдьюсер по семме влепить и почекать, но руки не дошли
(criterium/quick-bench
   (nth (map identity (range)) 1000))
Evaluation count : 4722 in 6 samples of 787 calls.
            Execution time mean : 128,703538 µs
   Execution time std-deviation : 1,686277 µs
  Execution time lower quantile : 126,279861 µs ( 2,5%)
  Execution time upper quantile : 130,168251 µs (97,5%)
                  Overhead used : 1,968342 ns
=> nil
(criterium/quick-bench
   (nth (sequence (map identity) (range)) 1000))
Evaluation count : 5454 in 6 samples of 909 calls.
            Execution time mean : 111,039121 µs
   Execution time std-deviation : 619,091213 ns
  Execution time lower quantile : 110,503972 µs ( 2,5%)
  Execution time upper quantile : 111,851662 µs (97,5%)
                  Overhead used : 1,968342 ns
=> nil
(criterium/quick-bench
   (nth (eduction (map identity) (range)) 1000))
Evaluation count : 4956 in 6 samples of 826 calls.
            Execution time mean : 119,864457 µs
   Execution time std-deviation : 673,209142 ns
  Execution time lower quantile : 119,005054 µs ( 2,5%)
  Execution time upper quantile : 120,625938 µs (97,5%)
                  Overhead used : 1,968342 ns
=> nil
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
все, расстроили вы мою веру в ФП. буду лупапи с атомами писать
у мапа в каждой итерации (seq coll) (15ns) и (chunked-seq? s) (8ns)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
у мапа в каждой итерации (seq coll) (15ns) и (chunked-seq? s) (8ns)
а ещё first и rest от range
(rest (range 10))
— 50+ns
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
то есть оверхед из за ковыряния внутри range 😊
источник