mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 00:11:11 +00:00
47 lines
1.2 KiB
Clojure
47 lines
1.2 KiB
Clojure
(ns reitit.ring-perf-test
|
|
(:require [criterium.core :as cc]
|
|
[reitit.ring :as ring]))
|
|
|
|
;;
|
|
;; start repl with `lein perf repl`
|
|
;; perf measured with the following setup:
|
|
;;
|
|
;; Model Name: MacBook Pro
|
|
;; Model Identifier: MacBookPro11,3
|
|
;; Processor Name: Intel Core i7
|
|
;; Processor Speed: 2,5 GHz
|
|
;; Number of Processors: 1
|
|
;; Total Number of Cores: 4
|
|
;; L2 Cache (per Core): 256 KB
|
|
;; L3 Cache: 6 MB
|
|
;; Memory: 16 GB
|
|
;;
|
|
|
|
(defn create-app [options]
|
|
(ring/ring-handler
|
|
(ring/router
|
|
[["/auth/login" identity]
|
|
["/auth/recovery/token/:token" identity]
|
|
["/workspace/:project/:page" identity]])
|
|
(ring/create-default-handler)
|
|
options))
|
|
|
|
(defn bench-app []
|
|
(let [request {:request-method :post, :uri "/auth/login"}
|
|
app1 (create-app nil)
|
|
app2 (create-app {:inject-match? false, :inject-router? false})]
|
|
;; 192ns (initial)
|
|
;; 163ns (always assoc path params)
|
|
;; 132ns (expand methods)
|
|
;; 111ns (java-segment-router)
|
|
(cc/quick-bench
|
|
(app1 request))
|
|
|
|
;; 113ns (don't inject router)
|
|
;; 89ns (don't inject router & match)
|
|
;; 77ns (java-segment-router)
|
|
(cc/quick-bench
|
|
(app2 request))))
|
|
|
|
(comment
|
|
(bench-app))
|