Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- writeToByteString :: Write -> ByteString
- data Write = Write {}
- word8 :: Word8 -> Write
- word64AsciiDec :: Word64 -> Write
- wordAsciiDec :: Word -> Write
- int64AsciiDec :: Int64 -> Write
- intAsciiDec :: Int -> Write
- doubleAsciiDec :: Double -> Write
- zeroNonRealDoubleAsciiDec :: Double -> Write
- scientificAsciiDec :: Scientific -> Write
- byteString :: ByteString -> Write
- textUtf8 :: Text -> Write
Documentation
writeToByteString :: Write -> ByteString Source #
Execute Write, producing strict ByteString.
Specification of how many bytes to allocate and how to populate them.
Useful for creating strict bytestrings and tasks like that.
word64AsciiDec :: Word64 -> Write Source #
Render Word64 in ASCII decimal.
wordAsciiDec :: Word -> Write Source #
Render Word in ASCII decimal.
int64AsciiDec :: Int64 -> Write Source #
Render Int64 in ASCII decimal.
intAsciiDec :: Int -> Write Source #
Render Int in ASCII decimal.
doubleAsciiDec :: Double -> Write Source #
Render double interpreting non-real values,
such as NaN
, Infinity
, -Infinity
,
as is.
zeroNonRealDoubleAsciiDec :: Double -> Write Source #
Render double interpreting non real values,
such as NaN
, Infinity
, -Infinity
,
as zero.
scientificAsciiDec :: Scientific -> Write Source #
Render Scientific in ASCII decimal.
byteString :: ByteString -> Write Source #
Efficiently copy the contents of ByteString using memcpy
.
textUtf8 :: Text -> Write Source #
Render Text in UTF8.
Does pretty much the same as encodeUtf8
,
both implementation and performance-wise,
while allowing you to avoid redundant memcpy
compared to (
.byteString
. encodeUtf8
)
Following are the benchmark results comparing the performance of
(
with
writeToByteString
. textUtf8
)Data.Text.Encoding.
on inputs in Latin and Greek (requiring different number of surrogate bytes).
The results show that they are quite similar.encodeUtf8
Benchmark results
textUtf8/ptr-poker/latin/1 mean 57.06 ns ( +- 3.283 ns ) textUtf8/ptr-poker/latin/10 mean 214.1 ns ( +- 8.601 ns ) textUtf8/ptr-poker/latin/100 mean 1.536 μs ( +- 75.03 ns ) textUtf8/ptr-poker/greek/1 mean 85.98 ns ( +- 5.038 ns ) textUtf8/ptr-poker/greek/10 mean 482.1 ns ( +- 12.38 ns ) textUtf8/ptr-poker/greek/100 mean 4.398 μs ( +- 33.94 ns ) textUtf8/text/latin/1 mean 60.28 ns ( +- 3.517 ns ) textUtf8/text/latin/10 mean 201.6 ns ( +- 8.118 ns ) textUtf8/text/latin/100 mean 1.323 μs ( +- 51.25 ns ) textUtf8/text/greek/1 mean 99.14 ns ( +- 1.264 ns ) textUtf8/text/greek/10 mean 483.4 ns ( +- 5.844 ns ) textUtf8/text/greek/100 mean 4.238 μs ( +- 40.55 ns )