mirror of
https://github.com/metosin/reitit.git
synced 2025-12-16 16:01:11 +00:00
tune perf
This commit is contained in:
parent
6c23a5562a
commit
682dd05568
2 changed files with 64 additions and 13 deletions
|
|
@ -203,19 +203,14 @@
|
|||
|
||||
(defn form-encode [s]
|
||||
(if s
|
||||
#?(:clj (-> s
|
||||
(str/replace #"[^A-Za-z0-9\!'\(\)\*_~.-\\\ ]+" percent-encode)
|
||||
(^String .replace " " "+"))
|
||||
#?(:clj (URLEncoder/encode ^String s "UTF-8")
|
||||
:cljs (str/replace (js/encodeURIComponent s) "%20" "+"))))
|
||||
|
||||
(defn form-decode [s]
|
||||
(if s
|
||||
#?(:clj (let [s (if (.contains ^String s "+")
|
||||
(.replace ^String s "+" " ")
|
||||
s)]
|
||||
(if (.contains ^String s "%")
|
||||
(URLDecoder/decode s "UTF-8")
|
||||
s))
|
||||
#?(:clj (if (or (.contains ^String s "%") (.contains ^String s "+"))
|
||||
(URLDecoder/decode ^String s "UTF-8")
|
||||
s)
|
||||
:cljs (js/decodeURIComponent (str/replace s "+" " ")))))
|
||||
|
||||
(defprotocol IntoString
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
(.replace ^String s "+" "%2B")
|
||||
"UTF-8"))
|
||||
|
||||
(defn decode! []
|
||||
(defn url-decode! []
|
||||
|
||||
;; ring
|
||||
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
(.contains s "(") (.replace "%28" "(")
|
||||
(.contains s ")") (.replace "%29" ")")))
|
||||
|
||||
(defn encode! []
|
||||
(defn url-encode! []
|
||||
|
||||
;; ring
|
||||
|
||||
|
|
@ -111,6 +111,62 @@
|
|||
"1"]]
|
||||
(test! f s))))
|
||||
|
||||
(defn form-decode! []
|
||||
|
||||
;; ring
|
||||
|
||||
;; 280ns
|
||||
;; 130ns
|
||||
;; 43ns
|
||||
;; 25ns
|
||||
|
||||
;; reitit
|
||||
|
||||
;; 270ns (-4%)
|
||||
;; 20ns (-84%)
|
||||
;; 47ns (+8%)
|
||||
;; 12ns (-52%)
|
||||
|
||||
(doseq [fs ['ring.util.codec/form-decode-str
|
||||
'reitit.impl/form-decode]
|
||||
:let [f (deref (resolve fs))]]
|
||||
(suite (str fs))
|
||||
(doseq [s ["%2Baja%20hiljaa+sillalla"
|
||||
"aja_hiljaa_sillalla"
|
||||
"1+1"
|
||||
"1"]]
|
||||
(test! f s))))
|
||||
|
||||
(defn form-encode! []
|
||||
|
||||
;; ring
|
||||
|
||||
;; 240ns
|
||||
;; 120ns
|
||||
;; 130ns
|
||||
;; 31ns
|
||||
|
||||
;; reitit
|
||||
|
||||
;; 210ns
|
||||
;; 120ns
|
||||
;; 130ns
|
||||
;; 30ns
|
||||
|
||||
(doseq [fs ['ring.util.codec/form-encode
|
||||
'reitit.impl/form-encode]
|
||||
:let [f (deref (resolve fs))]]
|
||||
(suite (str fs))
|
||||
(doseq [s ["aja hiljaa+sillalla"
|
||||
"aja_hiljaa_sillalla"
|
||||
"1+1"
|
||||
"1"]]
|
||||
(test! f s))))
|
||||
|
||||
(comment
|
||||
(decode!)
|
||||
(encode!))
|
||||
(url-decode!)
|
||||
(url-encode!)
|
||||
(form-decode!)
|
||||
(form-encode!))
|
||||
|
||||
(ring.util.codec/form-decode-str "%2B632+905+123+4567")
|
||||
|
|
|
|||
Loading…
Reference in a new issue