diff --git a/Benchmark.hs b/Benchmark.hs
new file mode 100644
--- /dev/null
+++ b/Benchmark.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+import Criterion.Main
+import System.Metrics (newStore)
+import Network.Wai.Metrics
+import Web.Scotty (scottyApp, middleware, get, html)
+import Network.Wai (Application)
+import Control.Monad (replicateM_, when)
+import Data.Int (Int64)
+import qualified System.Metrics.Counter as Counter
+import qualified Network.Wai.Test as WT
+import qualified Data.ByteString as BS
+
+testServer :: Bool -> (Application -> IO a) -> Int -> IO WaiMetrics
+testServer measure action times = do
+  store <- newStore
+  waiMetrics <- registerWaiMetrics store
+  app <- scottyApp $ do
+    when (measure) (middleware (metrics waiMetrics))
+    get "/" $ html "Ping"
+  replicateM_ times (action app)
+  return waiMetrics
+
+readRequestCounter :: Bool -> (Application -> IO a) -> Int -> IO Int64
+readRequestCounter measure action times = do
+  waiMetrics <- testServer measure action times
+  Counter.read (requestCounter waiMetrics)
+
+-- Send a GET request to a WAI Application
+httpGet :: BS.ByteString -> Application -> IO WT.SResponse
+httpGet path =  WT.runSession (WT.srequest (WT.SRequest req ""))
+  where req = WT.setRawPathInfo WT.defaultRequest path
+
+-- As to version 0.2.1, the middleware costs 0.7 microseconds per request
+-- Most of this time is spent with the latency measure
+main :: IO()
+main = defaultMain [
+  bgroup "fib" [
+                 bench "with metrics"    $ nfIO (readRequestCounter True  (httpGet "") 10000)
+               , bench "without metrics" $ nfIO (readRequestCounter False (httpGet "") 10000)
+               ]
+  ]
diff --git a/wai-middleware-metrics.cabal b/wai-middleware-metrics.cabal
--- a/wai-middleware-metrics.cabal
+++ b/wai-middleware-metrics.cabal
@@ -1,5 +1,5 @@
 name:                wai-middleware-metrics
-version:             0.2.0
+version:             0.2.1
 synopsis:            A WAI middleware to collect EKG request metrics
 description:         This WAI middleware counts the number of requests, the number of server errors (http status >= 500) and keeps a latency distribution.
                      .
@@ -26,7 +26,7 @@
   default-language:    Haskell2010
   ghc-options:        -Wall
 
-test-suite unit
+test-suite metrics-test
   build-depends:       base >=4.6 && < 5
                      , wai >= 3.0
                      , ekg-core >= 0.1
@@ -44,6 +44,22 @@
   type:                exitcode-stdio-1.0
   main-is:             tests.hs
   default-language:    Haskell2010
+
+benchmark metrics-bench
+  build-depends:       base
+                     , criterion
+                     , wai >= 3.0
+                     , wai-middleware-metrics
+                     , wai-extra >= 3.0.0
+                     , scotty >= 0.8.0
+                     , bytestring >= 0.10.0.2
+                     , ekg-core >= 0.1
+                     , http-types >= 0.8
+                     , time >= 1.4
+  type:                exitcode-stdio-1.0
+  main-is:             Benchmark.hs
+  default-language:    Haskell2010
+  ghc-options:         -Wall -O2
 
 source-repository head
   type:     git
