ua-parser-0.7: bench/Main.hs
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Main
( main
) where
-------------------------------------------------------------------------------
import Control.Applicative
import Control.DeepSeq
import Criterion.Main
import Data.DeriveTH
-------------------------------------------------------------------------------
import Web.UAParser
import Web.UAParser.SuiteUtils
-------------------------------------------------------------------------------
main :: IO ()
main = do
uas <- take 100 <$> loadTests "test_resources/firefox_user_agent_strings.yaml"
oses <- take 100 <$> loadTests "test_resources/additional_os_tests.yaml"
devs <- take 100 <$> loadTests "tests/test_device.yaml"
defaultMain [ bench "Parsing 100 UAs" $ nf (map (parseUA . uatcString)) uas
, bench "Parsing 100 OSes" $ nf (map (parseOS . ostcString)) oses
, bench "Parsing 100 Devices" $ nf (map (parseDev . dtcString)) devs
]
$(derives [makeNFData] [''UAResult, ''OSResult, ''DevResult])