on master help sign in
expose readArraysUpto for better cp/cat perf
commit0527088be52e5b3f3bed13109cff09a406ebcdbc authorHarendra Kumar <harendra.kumar@gmail.com> dateThu 16 May 2019, 06:21 (7 years ago) parentb9e7999
2 files changed+7−6
README.md+2−2 src/Streamly/FileSystem/File.hs+5−4
README.md+2−2
@@ -147,8 +147,8 @@ import Data.Char (ord)
147147import System.Environment (getArgs)
148148import System.IO (openFile, IOMode(..), stdout)
149149
150−cat src = File.writeArrays stdout $ File.readArrays src
151−cp src dst = File.writeArrays dst $ File.readArrays src
150+cat src = File.writeArrays stdout $ File.readArraysUpto (256*1024) src
151+cp src dst = File.writeArrays dst $ File.readArraysUpto (256*1024) src
152152wcl src = print =<<
153153 ( S.length
154154 $ FL.splitSuffixBy (== fromIntegral (ord '\n')) FL.drain
src/Streamly/FileSystem/File.hs+5−4
@@ -62,7 +62,7 @@ module Streamly.FileSystem.File
6262 -- , readArrayUpto
6363 -- , readArrayOf
6464
65− -- , readArraysUpto
65+ , readArraysUpto
6666 -- , readArraysOf
6767 , readArrays
6868
@@ -175,9 +175,8 @@ writeArray h Array{..} = withForeignPtr aStart $ \p -> hPutBuf h p aLen
175175-------------------------------------------------------------------------------
176176
177177-- | @readArraysUpto size h@ reads a stream of arrays from file handle @h@.
178−-- The maximum size of a single array is limited to @size@.
179−-- 'fromHandleArraysUpto' ignores the prevailing 'TextEncoding' and 'NewlineMode'
180−-- on the 'Handle'.
178+-- The maximum size of a single array is specified by @size@. The actual size
179+-- read may be less than or equal to @size@.
181180{-# INLINABLE readArraysUpto #-}
182181readArraysUpto :: (IsStream t, MonadIO m)
183182 => Int -> Handle -> t m (Array Word8)
@@ -197,6 +196,8 @@ readArraysUpto size h = go
197196-- 'readArrays' ignores the prevailing 'TextEncoding' and 'NewlineMode'
198197-- on the 'Handle'.
199198--
199+-- > readArrays = readArraysUpto defaultChunkSize
200+--
200201-- @since 0.7.0
201202{-# INLINE readArrays #-}
202203readArrays :: (IsStream t, MonadIO m) => Handle -> t m (Array Word8)