ST
(fn [x] (Math/cos (Math/sin x))) мемоизированный вариант в два раза медленнееSize: a a a
ST
(fn [x] (Math/cos (Math/sin x))) мемоизированный вариант в два раза медленнееPL
PL
ST
(defn calculate-area [function x]
(let [f (memoize (partial function))]
(*
step
(/
(+
(f x)
(+ (f x) (f step)))
2)
)
)
)
ST
Thread/sleep 😊PL
PL
ST
(defn integral
([function x]
(let [modifier (if (< x 0) -1 1)]
(integral function (* x modifier) modifier)))
([function x modifier]
(let [f (memoize function)]
(loop [i 0
acc 0]
(if (< i x)
(recur (+ i step) (+ acc (calculate-area f i)))
(* acc modifier)
)
))
)
)
ST
IG
IG
PL
ST
calculate-areaPL
ST
(def f1 (fn [x] (Math/cos (Math/sin x))))
(f1 100)
;;Execution time mean : 46,949454 ns
(def f2 (memoize (fn [x] (Math/cos (Math/sin x)))))
(f2 100)
;;Execution time mean : 229,854022 ns
;; Function memoized using Caffeine
(def f3 (memoize/memoize (fn [x] (Math/cos (Math/sin x))) first ""))
(f3 100)
;;Execution time mean : 83,739631 ns
SP
SP
SP
ST
SP