From eeed8576da192700c5862650916fb84b7930108f Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Tue, 21 Aug 2018 22:14:55 +0300 Subject: [PATCH] perf tests --- .../reitit/middleware_interceptor_perf.clj | 37 ++++++++----------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/perf-test/clj/reitit/middleware_interceptor_perf.clj b/perf-test/clj/reitit/middleware_interceptor_perf.clj index d15823d7..1fcb9507 100644 --- a/perf-test/clj/reitit/middleware_interceptor_perf.clj +++ b/perf-test/clj/reitit/middleware_interceptor_perf.clj @@ -5,6 +5,8 @@ [reitit.interceptor :as interceptor] reitit.chain + sieppari.queue + sieppari.core io.pedestal.interceptor io.pedestal.interceptor.chain)) @@ -34,12 +36,12 @@ (def +items+ 10) (defn expected! [x] - (assert (= (range +items+) (:values x)))) + (println x) + #_(assert (= (range +items+) (:values x)))) (defn middleware [handler value] (fn [request] - (let [values (or (:values request) [])] - (handler (assoc request :values (conj values value)))))) + (handler request))) (def map-request {}) (def record-request (map->RequestOrContext map-request)) @@ -49,18 +51,21 @@ app (middleware/chain mw identity)] ;; 1000ns + ;; 18ns (identity) (title "middleware - map") (expected! (app map-request)) (cc/quick-bench (app map-request)) ;; 365ns + ;; 21ns (identity) (title "middleware - record") (expected! (app record-request)) (cc/quick-bench (app record-request)) - ;; 6900ns + ;; 6900ns + ;; 10000ns (identity) (title "middleware - dynamic") (expected! ((middleware/chain mw identity) record-request)) (cc/quick-bench @@ -70,10 +75,7 @@ (let [interceptors (conj (mapv (fn [value] - {:enter (fn [ctx] - (let [request (:request ctx) - values (conj (or (:values request) []) value)] - (assoc ctx :request (assoc request :values values))))}) + {:enter identity}) (range +items+)) identity) queue (sieppari.queue/into-queue interceptors) @@ -81,24 +83,28 @@ app2 (fn [req] (sieppari.core/execute queue req))] ;; 5500ns + ;; 4000ns (identity) (title "sieppari - map") (expected! (app map-request)) (cc/quick-bench (app map-request)) ;; 4600ns + ;; 3800ns (identity) (title "sieppari - record") (expected! (app record-request)) (cc/quick-bench (app record-request)) ;; 2200ns + ;; 1300ns (identity) (title "sieppari - map (compiled queue)") (expected! (app2 map-request)) (cc/quick-bench (app2 map-request)) ;; 1600ns + ;; 1300ns (identity) (title "sieppari - record (compiled queue)") (expected! (app2 record-request)) (cc/quick-bench @@ -147,25 +153,15 @@ (defn pedestal-chain-text [] (let [is (map io.pedestal.interceptor/interceptor (map (fn [value] - {:enter (interceptor value)}) (range +items+))) + {:enter identity}) (range +items+))) ctx (io.pedestal.interceptor.chain/enqueue nil is)] ;; 8400ns + ;; 7200ns (identity) (title "pedestal") (cc/quick-bench (io.pedestal.interceptor.chain/execute ctx)))) -#_(defn pedestal-tuned-chain-text [] - (let [is (map io.pedestal.interceptor/interceptor - (map (fn [value] - {:enter (interceptor value)}) (range +items+))) - ctx (reitit.chain/map->Context (reitit.chain/enqueue nil is))] - - ;; 67 µs - (title "pedestal - tuned") - (cc/quick-bench - (reitit.chain/execute ctx)))) - ;; ;; Naive chain ;; @@ -280,7 +276,6 @@ (middleware-test) (sieppari-test) (pedestal-chain-text) - (pedestal-tuned-chain-text) (interceptor-chain-test)) ; Middleware (static chain) => 5µs