on master help sign in
A few simple bang patterns help performance a little
commitdd7be63018243ab65272b883d96e8d432cc7a125 authorBryan O'Sullivan <bos@serpentine.com> dateWed 24 Oct 2012, 11:49 (14 years ago) parentc93192a
2 files changed+3−2
Data/Text/Array.hs+1 Data/Text/Lazy/Fusion.hs+2−2
Data/Text/Array.hs+1
@@ -181,6 +181,7 @@ run2 k = runST (do
181181 (marr,b) <- k
182182 arr <- unsafeFreeze marr
183183 return (arr,b))
184+{-# INLINE run2 #-}
184185
185186-- | Copy some elements of a mutable array.
186187copyM :: MArray s -- ^ Destination
Data/Text/Lazy/Fusion.hs+2−2
@@ -52,7 +52,7 @@ data UC s = UC s {-# UNPACK #-} !Int
5252-- | /O(n)/ Convert a 'Stream Char' into a 'Text', using the given
5353-- chunk size.
5454unstreamChunks :: Int -> Stream Char -> Text
55−unstreamChunks chunkSize (Stream next s0 len0)
55+unstreamChunks !chunkSize (Stream next s0 len0)
5656 | isEmpty len0 = Empty
5757 | otherwise = outer s0
5858 where
@@ -65,7 +65,7 @@ unstreamChunks chunkSize (Stream next s0 len0)
6565 fill = do a <- A.new unknownLength
6666 unsafeWrite a 0 x >>= inner a unknownLength s'
6767 unknownLength = 4
68− inner marr len s !i
68+ inner marr !len s !i
6969 | i + 1 >= chunkSize = return (marr, UC s i)
7070 | i + 1 >= len = {-# SCC "unstreamChunks/resize" #-} do
7171 let newLen = min (len `shiftL` 1) chunkSize