on master help sign in
expose readArraysUpto for better cp/cat perf
0527088Harendra Kumar
README.md+2−2
@@ -147,8 +147,8 @@ import Data.Char (ord)
147import System.Environment (getArgs)
147import System.Environment (getArgs)
148import System.IO (openFile, IOMode(..), stdout)
148import System.IO (openFile, IOMode(..), stdout)
149
149
150−cat src = File.writeArrays stdout $ File.readArrays src
150+cat src = File.writeArrays stdout $ File.readArraysUpto (256*1024) src
151−cp src dst = File.writeArrays dst $ File.readArrays src
151+cp src dst = File.writeArrays dst $ File.readArraysUpto (256*1024) src
152wcl src = print =<<
152wcl src = print =<<
153 ( S.length
153 ( S.length
154 $ FL.splitSuffixBy (== fromIntegral (ord '\n')) FL.drain
154 $ FL.splitSuffixBy (== fromIntegral (ord '\n')) FL.drain
src/Streamly/FileSystem/File.hs+5−4
@@ -62,7 +62,7 @@ module Streamly.FileSystem.File
62 -- , readArrayUpto
62 -- , readArrayUpto
63 -- , readArrayOf
63 -- , readArrayOf
64
64
65− -- , readArraysUpto
65+ , readArraysUpto
66 -- , readArraysOf
66 -- , readArraysOf
67 , readArrays
67 , readArrays
68
68
@@ -175,9 +175,8 @@ writeArray h Array{..} = withForeignPtr aStart $ \p -> hPutBuf h p aLen
175-------------------------------------------------------------------------------
175-------------------------------------------------------------------------------
176
176
177-- | @readArraysUpto size h@ reads a stream of arrays from file handle @h@.
177-- | @readArraysUpto size h@ reads a stream of arrays from file handle @h@.
178−-- The maximum size of a single array is limited to @size@.
178+-- The maximum size of a single array is specified by @size@. The actual size
179−-- 'fromHandleArraysUpto' ignores the prevailing 'TextEncoding' and 'NewlineMode'
179+-- read may be less than or equal to @size@.
180−-- on the 'Handle'.
181{-# INLINABLE readArraysUpto #-}
180{-# INLINABLE readArraysUpto #-}
182readArraysUpto :: (IsStream t, MonadIO m)
181readArraysUpto :: (IsStream t, MonadIO m)
183 => Int -> Handle -> t m (Array Word8)
182 => Int -> Handle -> t m (Array Word8)
@@ -197,6 +196,8 @@ readArraysUpto size h = go
197-- 'readArrays' ignores the prevailing 'TextEncoding' and 'NewlineMode'
196-- 'readArrays' ignores the prevailing 'TextEncoding' and 'NewlineMode'
198-- on the 'Handle'.
197-- on the 'Handle'.
199--
198--
199+-- > readArrays = readArraysUpto defaultChunkSize
200+--
200-- @since 0.7.0
201-- @since 0.7.0
201{-# INLINE readArrays #-}
202{-# INLINE readArrays #-}
202readArrays :: (IsStream t, MonadIO m) => Handle -> t m (Array Word8)
203readArrays :: (IsStream t, MonadIO m) => Handle -> t m (Array Word8)