Skip to content

Commit 1afaf34

Browse files
authored
Merge pull request #155 from haskell-works/use-construct64UnzipN-function-from-hw-prim
Use construct64UnzipN function from hw-prim
2 parents e96d75b + 8335ad7 commit 1afaf34

File tree

2 files changed

+3
-28
lines changed

2 files changed

+3
-28
lines changed

app/App/Commands/Demo.hs

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,45 +22,20 @@ import HaskellWorks.Data.Json.Standard.Cursor.Load.Cursor
2222
import HaskellWorks.Data.MQuery
2323
import HaskellWorks.Data.MQuery.Micro
2424
import HaskellWorks.Data.RankSelect.CsPoppy
25-
import HaskellWorks.Data.Vector.AsVector8
25+
import HaskellWorks.Data.Vector.Storable
2626
import Options.Applicative hiding (columns)
2727

2828
import qualified App.Commands.Types as Z
29-
import qualified Data.ByteString as BS
3029
import qualified Data.ByteString.Internal as BSI
3130
import qualified Data.ByteString.Lazy as LBS
3231
import qualified Data.DList as DL
33-
import qualified Data.Vector.Storable as DVS
34-
import qualified Data.Vector.Storable.Mutable as DVSM
3532
import qualified HaskellWorks.Data.BalancedParens.RangeMin as RM
3633
import qualified HaskellWorks.Data.ByteString.Lazy as LBS
3734
import qualified HaskellWorks.Data.Json.Simd.Index.Standard as S
3835
import qualified Options.Applicative as OA
3936
import qualified System.IO as IO
4037
import qualified System.IO.MMap as IO
4138

42-
constructUnzipN :: Int -> [(BS.ByteString, BS.ByteString)] -> (DVS.Vector Word64, DVS.Vector Word64)
43-
constructUnzipN nBytes xs = (DVS.unsafeCast ibv, DVS.unsafeCast bpv)
44-
where [ibv, bpv] = DVS.createT $ do
45-
let nW64s = (nBytes + 7) `div` 8
46-
let capacity = nW64s * 8
47-
ibmv <- DVSM.new capacity
48-
bpmv <- DVSM.new capacity
49-
(ibmvRemaining, bpmvRemaining) <- go ibmv bpmv xs
50-
return
51-
[ DVSM.take (((DVSM.length ibmv - ibmvRemaining) `div` 8) * 8) ibmv
52-
, DVSM.take (((DVSM.length bpmv - bpmvRemaining) `div` 8) * 8) bpmv
53-
]
54-
go :: DVSM.MVector s Word8 -> DVSM.MVector s Word8 -> [(BS.ByteString, BS.ByteString)] -> ST s (Int, Int)
55-
go ibmv bpmv ((ib, bp):ys) = do
56-
DVS.copy (DVSM.take (BS.length ib) ibmv) (asVector8 ib)
57-
DVS.copy (DVSM.take (BS.length bp) bpmv) (asVector8 bp)
58-
go (DVSM.drop (BS.length ib) ibmv) (DVSM.drop (BS.length bp) bpmv) ys
59-
go ibmv bpmv [] = do
60-
DVSM.set (DVSM.take 8 ibmv) 0
61-
DVSM.set (DVSM.take 8 bpmv) 0
62-
return (DVSM.length (DVSM.drop 8 ibmv), DVSM.length (DVSM.drop 8 bpmv))
63-
6439
runDemo :: Z.DemoOptions -> IO ()
6540
runDemo opts = do
6641
let filePath = opts ^. the @"filePath"
@@ -76,7 +51,7 @@ runDemo opts = do
7651
let !bs = BSI.fromForeignPtr (castForeignPtr fptr) offset size
7752
case S.makeStandardJsonIbBps (LBS.resegmentPadded 512 (LBS.fromStrict bs)) of
7853
Right ibBps -> do
79-
let (!ib, !bp) = constructUnzipN size ibBps
54+
let (!ib, !bp) = construct64UnzipN size ibBps
8055
let !cursor = GenericCursor bs (makeCsPoppy ib) (RM.mkRangeMin bp) 1
8156
let !json = lightJsonAt cursor
8257
let q = MQuery (DL.singleton json)

hw-json.cabal

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ common hw-json-simple-cursor { build-depends: hw-json-simple-cursor >= 0.1
5959
common hw-json-standard-cursor { build-depends: hw-json-standard-cursor >= 0.2.1.0 && < 0.3 }
6060
common hw-mquery { build-depends: hw-mquery >= 0.2.0.0 && < 0.3 }
6161
common hw-parser { build-depends: hw-parser >= 0.1 && < 0.2 }
62-
common hw-prim { build-depends: hw-prim >= 0.6.2.28 && < 0.7 }
62+
common hw-prim { build-depends: hw-prim >= 0.6.2.32 && < 0.7 }
6363
common hw-rankselect { build-depends: hw-rankselect >= 0.13 && < 0.14 }
6464
common hw-rankselect-base { build-depends: hw-rankselect-base >= 0.3.2.1 && < 0.4 }
6565
common hw-simd { build-depends: hw-simd >= 0.1.1.2 && < 0.2 }

0 commit comments

Comments
 (0)