packages feed

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])