on master help sign in
Replace a few multiplications with shifts

--HG-- extra : convert_revision : b58164b0e78ecb582f217fd6d6038ec714403861

commit3128ac0d23fee3e331fcbd529bd1a4de5ad0c446 authorBryan O'Sullivan <bos@serpentine.com> dateFri 23 Jul 2010, 20:48 (16 years ago) parent334d78d
2 files changed+3−2
Data/Text/Fusion.hs+1−1 Data/Text/Lazy/Fusion.hs+2−1
Data/Text/Fusion.hs+1−1
@@ -132,7 +132,7 @@ reverse (Stream next s len0)
132132 where j = i + 1
133133 Skip s1 -> loop s1 i len marr
134134 Yield x s1 | i < least -> do
135− let newLen = len * 2
135+ let newLen = len `shiftL` 1
136136 marr' <- A.unsafeNew newLen
137137 A.unsafeCopy marr 0 marr' (newLen-len) len
138138 write s1 (len+i) newLen marr'
Data/Text/Lazy/Fusion.hs+2−1
@@ -29,6 +29,7 @@ import Data.Text.Lazy.Internal
2929import qualified Data.Text.Internal as I
3030import qualified Data.Text.Array as A
3131import Data.Text.UnsafeChar (unsafeWrite)
32+import Data.Text.UnsafeShift (shiftL)
3233import Data.Text.Unsafe (iter)
3334import Data.Int (Int64)
3435
@@ -64,7 +65,7 @@ unstreamChunks chunkSize (Stream next s0 len0)
6465 inner marr len s i
6566 | i + 1 >= chunkSize = return (marr, (s,i))
6667 | i + 1 >= len = do
67− let newLen = min (len * 2) chunkSize
68+ let newLen = min (len `shiftL` 1) chunkSize
6869 marr' <- A.unsafeNew newLen
6970 A.copy marr marr'
7071 inner marr' newLen s i