SNAPSHOT to avoid reflection

This commit is contained in:
Tommi Reiman 2019-01-29 07:27:45 +02:00
parent 08edbe5b01
commit 94f4ab4e75
2 changed files with 86 additions and 78 deletions

View file

@ -14,7 +14,8 @@
[io.pedestal.http.route.definition.table :as table] [io.pedestal.http.route.definition.table :as table]
[io.pedestal.http.route.map-tree :as map-tree] [io.pedestal.http.route.map-tree :as map-tree]
[io.pedestal.http.route.router :as pedestal] [io.pedestal.http.route.router :as pedestal]
[reitit.core :as r])) [reitit.core :as r]
[criterium.core :as cc]))
;; ;;
;; start repl with `lein perf repl` ;; start repl with `lein perf repl`
@ -235,78 +236,78 @@
(def opensensors-compojure-routes (def opensensors-compojure-routes
(routes (routes
(context "/v1" [] (context "/v1" []
(context "/public" [] (context "/public" []
(ANY "/topics/:topic" [] {:name :test/route4} handler) (ANY "/topics/:topic" [] {:name :test/route4} handler)
(ANY "/users/:user-id" [] {:name :test/route16} handler) (ANY "/users/:user-id" [] {:name :test/route16} handler)
(ANY "/orgs/:org-id" [] {:name :test/route18} handler)) (ANY "/orgs/:org-id" [] {:name :test/route18} handler))
(context "/users/:user-id" [] (context "/users/:user-id" []
(ANY "/orgs/:org-id" [] {:name :test/route5} handler) (ANY "/orgs/:org-id" [] {:name :test/route5} handler)
(ANY "/invitations" [] {:name :test/route7} handler) (ANY "/invitations" [] {:name :test/route7} handler)
(ANY "/topics" [] {:name :test/route9} handler) (ANY "/topics" [] {:name :test/route9} handler)
(ANY "/bookmarks/followers" [] {:name :test/route10} handler) (ANY "/bookmarks/followers" [] {:name :test/route10} handler)
(context "/devices" [] (context "/devices" []
(ANY "/" [] {:name :test/route15} handler) (ANY "/" [] {:name :test/route15} handler)
#_(ANY "/bulk" [] {:name :test/route21} handler) #_(ANY "/bulk" [] {:name :test/route21} handler)
(ANY "/:client-id" [] {:name :test/route35} handler) (ANY "/:client-id" [] {:name :test/route35} handler)
(ANY "/:client-id/reset-password" [] {:name :test/route49} handler)) (ANY "/:client-id/reset-password" [] {:name :test/route49} handler))
(ANY "/device-errors" [] {:name :test/route22} handler) (ANY "/device-errors" [] {:name :test/route22} handler)
(ANY "/usage-stats" [] {:name :test/route24} handler) (ANY "/usage-stats" [] {:name :test/route24} handler)
(ANY "/claim-device/:client-id" [] {:name :test/route26} handler) (ANY "/claim-device/:client-id" [] {:name :test/route26} handler)
(ANY "/owned-orgs" [] {:name :test/route31} handler) (ANY "/owned-orgs" [] {:name :test/route31} handler)
(ANY "/bookmark/:topic" [] {:name :test/route33} handler) (ANY "/bookmark/:topic" [] {:name :test/route33} handler)
(ANY "/" [] {:name :test/route36} handler) (ANY "/" [] {:name :test/route36} handler)
(ANY "/orgs" [] {:name :test/route52} handler) (ANY "/orgs" [] {:name :test/route52} handler)
(ANY "/api-key" [] {:name :test/route43} handler) (ANY "/api-key" [] {:name :test/route43} handler)
(ANY "/bookmarks" [] {:name :test/route56} handler)) (ANY "/bookmarks" [] {:name :test/route56} handler))
(ANY "/search/topics/:term" [] {:name :test/route6} handler) (ANY "/search/topics/:term" [] {:name :test/route6} handler)
(context "/orgs" [] (context "/orgs" []
(ANY "/" [] {:name :test/route55} handler) (ANY "/" [] {:name :test/route55} handler)
(context "/:org-id" [] (context "/:org-id" []
(context "/devices" [] (context "/devices" []
(ANY "/" [] {:name :test/route37} handler) (ANY "/" [] {:name :test/route37} handler)
(ANY "/:device-id" [] {:name :test/route13} handler) (ANY "/:device-id" [] {:name :test/route13} handler)
#_(ANY "/:batch/:type" [] {:name :test/route8} handler)) #_(ANY "/:batch/:type" [] {:name :test/route8} handler))
(ANY "/usage-stats" [] {:name :test/route12} handler) (ANY "/usage-stats" [] {:name :test/route12} handler)
(ANY "/invitations" [] {:name :test/route19} handler) (ANY "/invitations" [] {:name :test/route19} handler)
(context "/members" [] (context "/members" []
(ANY "/:user-id" [] {:name :test/route34} handler) (ANY "/:user-id" [] {:name :test/route34} handler)
(ANY "/" [] {:name :test/route38} handler) (ANY "/" [] {:name :test/route38} handler)
#_(ANY "/invitation-data/:user-id" [] {:name :test/route39} handler)) #_(ANY "/invitation-data/:user-id" [] {:name :test/route39} handler))
(ANY "/errors" [] {:name :test/route17} handler) (ANY "/errors" [] {:name :test/route17} handler)
(ANY "/" [] {:name :test/route42} handler) (ANY "/" [] {:name :test/route42} handler)
(ANY "/confirm-membership/:token" [] {:name :test/route46} handler) (ANY "/confirm-membership/:token" [] {:name :test/route46} handler)
(ANY "/topics" [] {:name :test/route57} handler))) (ANY "/topics" [] {:name :test/route57} handler)))
(context "/messages" [] (context "/messages" []
(ANY "/user/:user-id" [] {:name :test/route14} handler) (ANY "/user/:user-id" [] {:name :test/route14} handler)
(ANY "/device/:client-id" [] {:name :test/route30} handler) (ANY "/device/:client-id" [] {:name :test/route30} handler)
(ANY "/topic/:topic" [] {:name :test/route48} handler)) (ANY "/topic/:topic" [] {:name :test/route48} handler))
(context "/topics" [] (context "/topics" []
(ANY "/:topic" [] {:name :test/route32} handler) (ANY "/:topic" [] {:name :test/route32} handler)
(ANY "/" [] {:name :test/route54} handler)) (ANY "/" [] {:name :test/route54} handler))
(ANY "/whoami" [] {:name :test/route41} handler) (ANY "/whoami" [] {:name :test/route41} handler)
(ANY "/login" [] {:name :test/route51} handler)) (ANY "/login" [] {:name :test/route51} handler))
(context "/v2" [] (context "/v2" []
(ANY "/whoami" [] {:name :test/route1} handler) (ANY "/whoami" [] {:name :test/route1} handler)
(context "/users/:user-id" [] (context "/users/:user-id" []
(ANY "/datasets" [] {:name :test/route2} handler) (ANY "/datasets" [] {:name :test/route2} handler)
(ANY "/devices" [] {:name :test/route25} handler) (ANY "/devices" [] {:name :test/route25} handler)
(context "/topics" [] (context "/topics" []
(ANY "/bulk" [] {:name :test/route29} handler) (ANY "/bulk" [] {:name :test/route29} handler)
(ANY "/" [] {:name :test/route54} handler)) (ANY "/" [] {:name :test/route54} handler))
(ANY "/" [] {:name :test/route45} handler)) (ANY "/" [] {:name :test/route45} handler))
(context "/public" [] (context "/public" []
(context "/projects/:project-id" [] (context "/projects/:project-id" []
(ANY "/datasets" [] {:name :test/route3} handler) (ANY "/datasets" [] {:name :test/route3} handler)
(ANY "/" [] {:name :test/route27} handler)) (ANY "/" [] {:name :test/route27} handler))
#_(ANY "/messages/dataset/bulk" [] {:name :test/route20} handler) #_(ANY "/messages/dataset/bulk" [] {:name :test/route20} handler)
(ANY "/datasets/:dataset-id" [] {:name :test/route28} handler) (ANY "/datasets/:dataset-id" [] {:name :test/route28} handler)
(ANY "/messages/dataset/:dataset-id" [] {:name :test/route53} handler)) (ANY "/messages/dataset/:dataset-id" [] {:name :test/route53} handler))
(ANY "/datasets/:dataset-id" [] {:name :test/route11} handler) (ANY "/datasets/:dataset-id" [] {:name :test/route11} handler)
(ANY "/login" [] {:name :test/route23} handler) (ANY "/login" [] {:name :test/route23} handler)
(ANY "/orgs/:org-id/topics" [] {:name :test/route40} handler) (ANY "/orgs/:org-id/topics" [] {:name :test/route40} handler)
(ANY "/schemas" [] {:name :test/route44} handler) (ANY "/schemas" [] {:name :test/route44} handler)
(ANY "/topics/:topic" [] {:name :test/route47} handler) (ANY "/topics/:topic" [] {:name :test/route47} handler)
(ANY "/topics" [] {:name :test/route50} handler)))) (ANY "/topics" [] {:name :test/route50} handler))))
(def opensensors-pedestal-routes (def opensensors-pedestal-routes
(map-tree/router (map-tree/router
@ -621,12 +622,19 @@
(comment (comment
;; 629ms (arraylist) ;; 629ms (arraylist)
;; 395ns (transient) ;; 395ns (transient)
(let [app (ring/ring-handler (ring/router opensensors-routes))] ;; (staticMultiMatcher)
(let [app (ring/ring-handler (ring/router opensensors-routes) {:inject-match? false, :inject-router? false})
request {:uri "/v1/users/1/devices/1", :request-method :get}]
(doseq [[p r] (-> app (ring/get-router) (r/routes))] (doseq [[p r] (-> app (ring/get-router) (r/routes))]
(when-not (app {:uri p, :request-method :get}) (when-not (app {:uri p, :request-method :get})
(println "FAIL:" p))) (println "FAIL:" p)))
(println (app {:uri "/v1/users/1/devices/1", :request-method :get})) (println (app request))
(prof/start {}) (cc/quick-bench
(dotimes [_ 100000] (app request))
(app {:uri "/v1/users/1/devices/1", :request-method :get})) #_#_#_(prof/start {})
; "Elapsed time: 9183.657012 msecs"
; "Elapsed time: 8674.70132 msecs"
(time
(dotimes [_ 20000000]
(app request)))
(str (prof/stop {})))) (str (prof/stop {}))))

View file

@ -91,7 +91,7 @@
[manifold "0.1.8"] [manifold "0.1.8"]
[funcool/promesa "1.9.0"] [funcool/promesa "1.9.0"]
[com.clojure-goes-fast/clj-async-profiler "0.2.2"] [com.clojure-goes-fast/clj-async-profiler "0.2.3-SNAPSHOT"]
;; https://github.com/bensu/doo/issues/180 ;; https://github.com/bensu/doo/issues/180
[fipp "0.6.14" :exclusions [org.clojure/core.rrb-vector]]]} [fipp "0.6.14" :exclusions [org.clojure/core.rrb-vector]]]}