ptr-poker-0.1.2: bench/Main.hs
module Main where
import Prelude
import Gauge.Main
import qualified PtrPoker.Write as Write
import qualified Data.Text.Encoding as Text
main =
defaultMain [
bgroup "bWord32" [
bench "4"
$ nf
(\(a,b,c,d) -> Write.writeToByteString $
Write.bWord32 a <> Write.bWord32 b <> Write.bWord32 c <> Write.bWord32 d)
(1,2,3,4)
]
,
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)
]
]
]
]