From 6e31afa5157255cc8243e5c22d05a5e938931b80 Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Mon, 20 Aug 2018 18:48:54 +0300 Subject: [PATCH] sieppari is 2-4x slower than mw --- .../reitit/middleware_interceptor_perf.clj | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/perf-test/clj/reitit/middleware_interceptor_perf.clj b/perf-test/clj/reitit/middleware_interceptor_perf.clj index 1079533d..d15823d7 100644 --- a/perf-test/clj/reitit/middleware_interceptor_perf.clj +++ b/perf-test/clj/reitit/middleware_interceptor_perf.clj @@ -41,11 +41,12 @@ (let [values (or (:values request) [])] (handler (assoc request :values (conj values value)))))) +(def map-request {}) +(def record-request (map->RequestOrContext map-request)) + (defn middleware-test [] (let [mw (map (fn [value] [middleware value]) (range +items+)) - app (middleware/chain mw identity) - map-request {} - record-request (map->RequestOrContext map-request)] + app (middleware/chain mw identity)] ;; 1000ns (title "middleware - map") @@ -65,6 +66,44 @@ (cc/quick-bench ((middleware/chain mw identity) record-request)))) +(defn sieppari-test [] + (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))))}) + (range +items+)) + identity) + queue (sieppari.queue/into-queue interceptors) + app (fn [req] (sieppari.core/execute interceptors req)) + app2 (fn [req] (sieppari.core/execute queue req))] + + ;; 5500ns + (title "sieppari - map") + (expected! (app map-request)) + (cc/quick-bench + (app map-request)) + + ;; 4600ns + (title "sieppari - record") + (expected! (app record-request)) + (cc/quick-bench + (app record-request)) + + ;; 2200ns + (title "sieppari - map (compiled queue)") + (expected! (app2 map-request)) + (cc/quick-bench + (app2 map-request)) + + ;; 1600ns + (title "sieppari - record (compiled queue)") + (expected! (app2 record-request)) + (cc/quick-bench + (app2 record-request)))) + ;; ;; Reduce ;; @@ -239,6 +278,7 @@ (comment (interceptor-test) (middleware-test) + (sieppari-test) (pedestal-chain-text) (pedestal-tuned-chain-text) (interceptor-chain-test))