module Main where import Prelude import Gauge.Main import qualified PtrPoker.Write as Write import qualified Data.Text.Encoding as Text main = defaultMain [ bgroup "textUtf8" $ let latinSampleBySize size = enumFromTo 'a' 'z' & replicate size & concat & fromString greekSampleBySize size = enumFromTo 'Α' 'Ω' & replicate size & concat & fromString !latinSample1 = latinSampleBySize 1 !latinSample10 = latinSampleBySize 10 !latinSample100 = latinSampleBySize 100 !greekSample1 = greekSampleBySize 1 !greekSample10 = greekSampleBySize 10 !greekSample100 = greekSampleBySize 100 in [ bgroup "ptr-poker" [ bgroup "latin" [ bench "1" (nf (Write.writeToByteString . Write.textUtf8) latinSample1), bench "10" (nf (Write.writeToByteString . Write.textUtf8) latinSample10), bench "100" (nf (Write.writeToByteString . Write.textUtf8) latinSample100) ] , bgroup "greek" [ bench "1" (nf (Write.writeToByteString . Write.textUtf8) greekSample1), bench "10" (nf (Write.writeToByteString . Write.textUtf8) greekSample10), bench "100" (nf (Write.writeToByteString . Write.textUtf8) greekSample100) ] ] , bgroup "text" [ bgroup "latin" [ bench "1" (nf Text.encodeUtf8 latinSample1), bench "10" (nf Text.encodeUtf8 latinSample10), bench "100" (nf Text.encodeUtf8 latinSample100) ] , bgroup "greek" [ bench "1" (nf Text.encodeUtf8 greekSample1), bench "10" (nf Text.encodeUtf8 greekSample10), bench "100" (nf Text.encodeUtf8 greekSample100) ] ] ] ]