@@ -33,10 +33,13 @@ import Data.ByteString.Builder.Extra (byteStringCopy,
3333import Data.ByteString.Builder.Internal (ensureFree )
3434import Data.ByteString.Builder.Prim (BoundedPrim , FixedPrim ,
3535 (>$<) )
36+ import qualified Data.ByteString.Builder.Internal as BI
3637import qualified Data.ByteString.Builder.Prim as P
3738import qualified Data.ByteString.Builder.Prim.Internal as PI
3839
3940import Foreign
41+ import GHC.Exts (Addr #)
42+ import GHC.Ptr (Ptr (.. ))
4043
4144import System.Random
4245
@@ -247,6 +250,13 @@ largeTraversalInput = S.concat (replicate 10 byteStringData)
247250smallTraversalInput :: S. ByteString
248251smallTraversalInput = S8. pack " The quick brown fox"
249252
253+ asciiLit , utf8Lit :: Ptr Word8
254+ asciiLit = Ptr " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #
255+ utf8Lit = Ptr " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\xc0\x80 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" #
256+
257+ addrOf :: Ptr Word8 -> Addr #
258+ addrOf (Ptr addr) = addr
259+
250260main :: IO ()
251261main = do
252262 defaultMain
@@ -256,11 +266,11 @@ main = do
256266 , benchB' " ensureFree 8" () (const (ensureFree 8 ))
257267 , benchB' " intHost 1" 1 intHost
258268 , benchB' " UTF-8 String (naive)" " hello world\0" fromString
259- , benchB' " UTF-8 String" () $ \ () -> P. cstringUtf8 " hello world\0 " #
269+ , benchB' " UTF-8 String" () $ \ () -> BI. cstringUtf8Literal " hello world\xc0\x80 " #
260270 , benchB' " String (naive)" " hello world!" fromString
261- , benchB' " String" () $ \ () -> P. cstring " hello world!" #
262- , benchB' " AsciiLit64 " () $ \ () -> P. cstring " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " #
263- , benchB' " Utf8Lit64 " () $ \ () -> P. cstringUtf8 " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \xc0\x80 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx " #
271+ , benchB' " String" () $ \ () -> BI. cstringLiteral " hello world!" #
272+ , benchB' " AsciiLit " () $ \ () -> BI. cstringLiteral (addrOf asciiLit)
273+ , benchB' " Utf8Lit " () $ \ () -> BI. cstringUtf8Literal (addrOf utf8Lit)
264274 ]
265275
266276 , bgroup " Encoding wrappers"
0 commit comments