                         :coercion spec/coercion}}))
         request {:request-method :post
                  :uri "/plus"
+                 :muuntaja/request {:format "application/json"}
                  :body-params {:x 1, :y 2}}
         call (fn [] (-> request app :body))]
     (assert (= {:result 3} (call)))
 
     ;;  3.2µs
+    ;; 13.0µs (real json)
+    (cc/quick-bench
+      (call))))
+
+(defn malli-perf-test []
+  (title "malli")
+  (let [app (ring/ring-handler
+              (ring/router
+                ["/plus" {:post {:responses {200 {:body [:map [:result int?]]}}
+                                 :parameters {:body [:map [:x int?] [:y int?]]}
+                                 :handler (fn [request]
+                                            (let [body (-> request :parameters :body)]
+                                              {:status 200, :body {:result (+ (:x body) (:y body))}}))}}]
+                {:data {:middleware [rrc/coerce-request-middleware
+                                     rrc/coerce-response-middleware]
+                        :coercion malli/coercion}}))
+        request {:request-method :post
+                 :uri "/plus"
+                 :muuntaja/request {:format "application/json"}
+                 :body-params {:x 1, :y 2}}
+        call (fn [] (-> request app :body))]
+    (assert (= {:result 3} (call)))
+
+    ;;  1.2µs (real json)
     (cc/quick-bench
       (call))))
 
 (comment
   (json-perf-test)
   (schema-json-perf-test)
-  (schema-perf-test)
-  (data-spec-perf-test)
-  (spec-perf-test))
+
+  (do
+    (schema-perf-test)
+    (data-spec-perf-test)
+    (spec-perf-test)
+    (malli-perf-test)))

                        :coercion schema/coercion}}))
        request {:request-method :post
                 :uri "/plus"
                 :body-params {:x 1, :y 2}}
        call (fn [] (-> request app :body))]
    (assert (= {:result 3} (call)))


(defn schema-json-perf-test []
  (title "schema-json")
  (let [app (ring/ring-handler
              (ring/router
                ["/plus" {:post {:responses {200 {:body {:result Long}}}
                                 :parameters {:body {:x Long, :y Long}}
                                 :handler (fn [request]
                                            (let [body (-> request :parameters :body)]
                                              {:status 200, :body {:result (+ (:x body) (:y body))}}))}}]
                {:data {:middleware [mm/wrap-format
                                     rrc/coerce-request-middleware
                                     rrc/coerce-response-middleware]
                        :coercion schema/coercion}}))
