@@ -21,50 +21,42 @@ import qualified TextBuilder
2121word :: Word
2222word = 123456789123456789
2323
24- benchLazyBuilder ∷ Word → T. Text
24+ benchLazyBuilder ∷ Int → T. Text
2525benchLazyBuilder = toStrict . toLazyText . go mempty
2626 where
2727 go ! acc 0 = acc
28- go ! acc n = let i = n * word in go (hexadecimal i <> (acc <> hexadecimal i)) (n - 1 )
28+ go ! acc n = let i = fromIntegral n * word in go (hexadecimal i <> (acc <> hexadecimal i)) (n - 1 )
2929
30- benchLazyBuilderBS ∷ Word → B. ByteString
30+ benchLazyBuilderBS ∷ Int → B. ByteString
3131benchLazyBuilderBS = B. toStrict . B. toLazyByteString . go mempty
3232 where
3333 go ! acc 0 = acc
34- go ! acc n = go (B. wordHex n <> (acc <> B. wordHex n )) (n - 1 )
34+ go ! acc n = go (B. wordHex ( fromIntegral n) <> (acc <> B. wordHex ( fromIntegral n) )) (n - 1 )
3535
3636#ifdef MIN_VERSION_text_builder
37- benchStrictBuilder ∷ Word → T. Text
37+ benchStrictBuilder ∷ Int → T. Text
3838benchStrictBuilder = TextBuilder. toText . go mempty
3939 where
4040 go ! acc 0 = acc
41- go ! acc n = let i = n * word in go (TextBuilder. hexadecimal i <> (acc <> TextBuilder. hexadecimal i)) (n - 1 )
41+ go ! acc n = let i = fromIntegral n * word in go (TextBuilder. hexadecimal i <> (acc <> TextBuilder. hexadecimal i)) (n - 1 )
4242#endif
4343
44- benchLinearBuilderWord ∷ Word → T. Text
45- benchLinearBuilderWord m = runBuffer (\ b → go b m)
46- where
47- go ∷ Buffer ⊸ Word → Buffer
48- go ! acc 0 = acc
49- go ! acc n = let i = n * word in go (i &<| (acc |>& i)) (n - 1 )
50-
51- benchLinearBuilderInt ∷ Word → T. Text
52- benchLinearBuilderInt m = runBuffer (\ b → go b (fromIntegral m))
44+ benchLinearBuilder ∷ Int → T. Text
45+ benchLinearBuilder m = runBuffer (\ b → go b m)
5346 where
5447 go ∷ Buffer ⊸ Int → Buffer
5548 go ! acc 0 = acc
56- go ! acc n = let i = n * fromIntegral word in go (i &<| (acc |>& i)) (n - 1 )
49+ go ! acc n = let i = fromIntegral n * word in go (i &<| (acc |>& i)) (n - 1 )
5750
5851benchHexadecimal ∷ Benchmark
5952benchHexadecimal = bgroup " Hexadecimal" $ map mkGroup [1e0 , 1e1 , 1e2 , 1e3 , 1e4 , 1e5 , 1e6 ]
6053
61- mkGroup :: Word → Benchmark
54+ mkGroup :: Int → Benchmark
6255mkGroup n = bgroup (show n)
6356 [ bench " Data.Text.Lazy.Builder" $ nf benchLazyBuilder n
6457 , bench " Data.ByteString.Builder" $ nf benchLazyBuilderBS n
6558#ifdef MIN_VERSION_text_builder
6659 , bench " TextBuilder" $ nf benchStrictBuilder n
6760#endif
68- , bench " Data.Text.Builder.Linear (Word)" $ nf benchLinearBuilderWord n
69- , bench " Data.Text.Builder.Linear (Int)" $ nf benchLinearBuilderInt n
61+ , bench " Data.Text.Builder.Linear" $ nf benchLinearBuilder n
7062 ]
0 commit comments