aging-session/test/aging_session/performance.clj
2022-01-05 17:00:49 -05:00

58 lines
2 KiB
Clojure

(ns aging-session.performance
(:require
[clojure.test :refer :all]
[criterium.core :refer [quick-bench]]
[ring.middleware.session.store :refer :all]
[ring.middleware.session.memory :refer [memory-store]]
[aging-session.core :refer [aging-memory-store]]))
; these are copied from ring-ttl-session's benchmarks so that i can see how the performance of
; aging-session compares against it.
; https://github.com/boechat107/ring-ttl-session/blob/develop/test/ring_ttl_session/performance.clj
;
; right now aging-session is slower than ExpiringMap (to be expected, honestly...), but generally faster than
; ring-ttl-session's core.cache implementation. but there are still things that we can do to speed up aging-session.
(defn ->aging-memory-store
[ttl]
(aging-memory-store
ttl
{:refresh-on-write? true
:refresh-on-read? true}))
(defn check-nonexistent-read
[]
(let [aging (->aging-memory-store 10)
mem (memory-store)]
(println \newline "*** AGING-SESSION ***" \newline)
(quick-bench (read-session aging "nonexistent"))
(println \newline "*** MEMORY-STORE ***" \newline)
(quick-bench (read-session mem "nonexistent"))))
#_(check-nonexistent-read)
(defn check-session-read
[]
(let [aging (->aging-memory-store 10)
mem (memory-store)
data {:foo "bar"}
aging-key (write-session aging nil data)
mem-key (write-session mem nil data)]
(println \newline "*** AGING-SESSION ***" \newline)
(quick-bench (read-session aging aging-key))
(println \newline "*** MEMORY-STORE ***" \newline)
(quick-bench (read-session mem mem-key))))
#_(check-session-read)
(defn check-session-create []
(let [aging (->aging-memory-store 10)
mem (memory-store)
data {:foo "bar"}]
(println \newline "*** AGING-SESSION ***" \newline)
(quick-bench (write-session aging nil data))
(println \newline "*** MEMORY-STORE ***" \newline)
(quick-bench (write-session mem nil data))))
#_(check-session-create)