58 lines
2 KiB
Clojure
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)
|