packages feed

unicode-collation-0.1: benchmark/Main.hs

{-# LANGUAGE OverloadedStrings    #-}
{-# LANGUAGE ScopedTypeVariables  #-}
module Main (main) where

import Test.Tasty.Bench
import Test.QuickCheck
import Data.Text (Text)
import qualified Data.Text.ICU as ICU
import Text.Collate
import Test.QuickCheck.Instances.Text ()
import Data.List (sortBy)
-- import Debug.Trace

main :: IO ()
main = do
  (randomTexts :: [Text]) <- generate (infiniteListOf arbitrary)
  let tenThousand = take 10000 randomTexts
  defaultMain
    [ bench "sort a list of 10000 random Texts"
        (whnf (sortBy (collate rootCollator)) tenThousand)
    , bench "sort same list with text-icu"
        (whnf (sortBy (ICU.collate (ICU.collator ICU.Root))) tenThousand)
    ]