hw-dsv 0.4.1.0 → 0.4.1.1
raw patch · 20 files changed
+77/−73 lines, 20 filesdep ~criteriondep ~doctestdep ~ghc-primPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: criterion, doctest, ghc-prim, hedgehog, optparse-applicative, text, vector
API changes (from Hackage documentation)
Files
- README.md +4/−3
- app/App/Commands.hs +2/−0
- app/App/Commands/Generate.hs +2/−2
- app/App/Commands/QueryLazy.hs +6/−4
- app/App/Commands/QueryStrict.hs +2/−2
- app/App/Commands/RangeJoin.hs +9/−9
- app/App/Data/ColumnDesc.hs +1/−1
- bench/Main.hs +8/−7
- hw-dsv.cabal +13/−12
- src/HaskellWorks/Data/Dsv/Lazy/Cursor.hs +0/−1
- src/HaskellWorks/Data/Dsv/Lazy/Cursor/Lazy.hs +2/−0
- src/HaskellWorks/Data/Dsv/Lazy/Cursor/Strict.hs +3/−1
- src/HaskellWorks/Data/Dsv/Strict/Cursor.hs +0/−1
- src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal.hs +2/−3
- src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal/Reference.hs +5/−5
- test/HaskellWorks/Data/Dsv/BroadwordSpec.hs +3/−3
- test/HaskellWorks/Data/Dsv/Lazy/CursorSpec.hs +3/−3
- test/HaskellWorks/Data/Dsv/Strict/Cursor/InternalSpec.hs +6/−6
- test/HaskellWorks/Data/DsvSpec.hs +3/−3
- weigh/Space.hs +3/−7
README.md view
@@ -86,9 +86,10 @@ module Example where -import qualified Data.ByteString.Lazy as LBS-import qualified Data.Vector as DV-import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL+import qualified Data.ByteString.Lazy as LBS+import qualified Data.Vector as DV+import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL+import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVL example :: IO () example = do
app/App/Commands.hs view
@@ -8,6 +8,8 @@ import App.Commands.RangeJoin import Options.Applicative +{- HLINT ignore "Monoid law, left identity" -}+ commands :: Parser (IO ()) commands = commandsGeneral <|> commandsDebugging
app/App/Commands/Generate.hs view
@@ -7,11 +7,11 @@ import Control.Lens import Data.Generics.Product.Any-import Data.List import Options.Applicative hiding (columns) import qualified App.Commands.Options.Type as Z import qualified App.Gen as G+import qualified Data.List as L import qualified Hedgehog.Gen as G import qualified Hedgehog.Range as R @@ -29,7 +29,7 @@ csv <- G.sample (G.list (R.singleton rows) (G.list (R.singleton fields) G.field)) :: IO [[String]] - putStr $ unlines $ map (intercalate "," . map printField) csv+ putStr $ unlines $ map (L.intercalate "," . map printField) csv return ()
app/App/Commands/QueryLazy.hs view
@@ -16,7 +16,6 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List import Options.Applicative hiding (columns) import qualified App.Commands.Options.Type as Z@@ -25,6 +24,7 @@ import qualified Data.ByteString as BS import qualified Data.ByteString.Builder as B import qualified Data.ByteString.Lazy as LBS+import qualified Data.List as L import qualified Data.Vector as DV import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL@@ -32,6 +32,8 @@ import qualified System.Exit as IO import qualified System.IO as IO +{- HLINT ignore "Reduce duplication" -}+ defaultMethod :: String defaultMethod = "lazy-traverse" @@ -57,7 +59,7 @@ forM_ rows $ \row -> do let fieldStrings = columnToFieldString row <$> (opts ^.. the @"columns" . each . the @"number") - liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+ liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10 return () return ()@@ -79,7 +81,7 @@ forM_ rows $ \row -> do let fieldStrings = columnToFieldString row <$> (opts ^.. the @"columns" . each . the @"number") - liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+ liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10 return () return ()@@ -102,7 +104,7 @@ forM_ rows $ \row -> do let fieldStrings = fmap B.lazyByteString row - liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+ liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10 return () return ()
app/App/Commands/QueryStrict.hs view
@@ -16,13 +16,13 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List import Options.Applicative import qualified App.Commands.Options.Type as Z import qualified App.IO as IO import qualified Data.ByteString as BS import qualified Data.ByteString.Builder as B+import qualified Data.List as L import qualified Data.Vector as DV import qualified HaskellWorks.Data.Dsv.Strict.Cursor as SVS @@ -41,7 +41,7 @@ forM_ rows $ \row -> do let fieldStrings = columnToFieldString row <$> (opts ^. the @"columns") - liftIO $ B.hPutBuilder hOut $ mconcat (intersperse outDelimiterBuilder fieldStrings) <> B.word8 10+ liftIO $ B.hPutBuilder hOut $ mconcat (L.intersperse outDelimiterBuilder fieldStrings) <> B.word8 10 return () return ()
app/App/Commands/RangeJoin.hs view
@@ -16,8 +16,7 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.Trans.Resource import Data.Generics.Product.Any-import Data.List-import Data.Maybe (catMaybes)+import Data.Maybe (fromMaybe, mapMaybe) import Data.Word import Options.Applicative hiding (columns) import Text.Read (readMaybe)@@ -27,6 +26,7 @@ import qualified App.IO as IO import qualified Data.ByteString.Builder as B import qualified Data.ByteString.Lazy as LBS+import qualified Data.List as L import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Data.Vector as DV@@ -35,7 +35,7 @@ rangeJoin :: (DV.Vector LBS.ByteString -> DV.Vector LBS.ByteString -> [LBS.ByteString]) -> Int -> Int -> [DV.Vector LBS.ByteString] -> Int -> Int -> [DV.Vector LBS.ByteString] -> [[LBS.ByteString]]-rangeJoin f aa az as ba bz bs = rangeJoin' f (catMaybes (fmap (mkEntry aa az) as)) (catMaybes (fmap (mkEntry ba bz) bs))+rangeJoin f aa az as ba bz bs = rangeJoin' f (mapMaybe (mkEntry aa az) as) (mapMaybe (mkEntry ba bz) bs) mkEntry :: Int -> Int -> DV.Vector LBS.ByteString -> Maybe (Word32, Word32, DV.Vector LBS.ByteString) mkEntry a z v = (,, v) <$> lookupWord32 a v <*> lookupWord32 z v@@ -50,15 +50,15 @@ -> [(Word32, Word32, DV.Vector LBS.ByteString)] -> [(Word32, Word32, DV.Vector LBS.ByteString)] -> [[LBS.ByteString]] rangeJoin' f ((ua, uz, u):us) ((va, vz, v):vs) = if | uz < va -> ("L":encodeWord32 ua:encodeWord32 uz :f u e):rangeJoin' f us ((va , vz, v):vs)- | vz < ua -> ("R":encodeWord32 va:encodeWord32 vz :f e v):rangeJoin' f ((ua , uz, u):us) ( vs)+ | vz < ua -> ("R":encodeWord32 va:encodeWord32 vz :f e v):rangeJoin' f ((ua , uz, u):us) vs | ua < va -> ("L":encodeWord32 ua:encodeWord32 (va - 1):f u e):rangeJoin' f ((va , uz, u):us) ((va , vz, v):vs) | va < ua -> ("R":encodeWord32 va:encodeWord32 (ua - 1):f e v):rangeJoin' f ((ua , uz, u):us) ((ua , vz, v):vs) | uz < vz -> ("B":encodeWord32 ua:encodeWord32 uz :f u v):rangeJoin' f us ((uz + 1, vz, v):vs) | vz < uz -> ("B":encodeWord32 va:encodeWord32 vz :f u v):rangeJoin' f ((vz + 1, uz, u):us) vs | otherwise -> ("B":encodeWord32 va:encodeWord32 vz :f u v):rangeJoin' f us vs where e = DV.empty-rangeJoin' f ((ua, uz, _):us) [] = ("L":encodeWord32 ua:encodeWord32 uz:[]):rangeJoin' f us []-rangeJoin' f [] ((va, vz, _):vs) = ("R":encodeWord32 va:encodeWord32 vz:[]):rangeJoin' f [] vs+rangeJoin' f ((ua, uz, _):us) [] = ["L", encodeWord32 ua, encodeWord32 uz]:rangeJoin' f us []+rangeJoin' f [] ((va, vz, _):vs) = ["R", encodeWord32 va, encodeWord32 vz]:rangeJoin' f [] vs rangeJoin' _ [] [] = [] encodeWord32 :: Word32 -> LBS.ByteString@@ -67,8 +67,8 @@ mkColumnSelector :: [Z.RangeJoinColumn] -> DV.Vector LBS.ByteString -> DV.Vector LBS.ByteString -> [LBS.ByteString] mkColumnSelector [] _ _ = [] mkColumnSelector (c:cs) u v = case c of- Z.LtColumn n -> (maybe "" id (u DV.!? n)):mkColumnSelector cs u v- Z.RtColumn n -> (maybe "" id (v DV.!? n)):mkColumnSelector cs u v+ Z.LtColumn n -> fromMaybe "" (u DV.!? n):mkColumnSelector cs u v+ Z.RtColumn n -> fromMaybe "" (v DV.!? n):mkColumnSelector cs u v runRangeJoin :: Z.RangeJoinOptions -> IO () runRangeJoin opts = do@@ -95,7 +95,7 @@ (_, hOut) <- IO.openOutputFile outputFilePath Nothing let outLbsss = rangeJoin columnSelector input1StartColumn input1StopColumn rows1 input2StartColumn input2StopColumn rows2 let outBss = fmap (fmap B.lazyByteString) outLbsss- let outB = mconcat (intersperse outNewlineBuilder (fmap (mconcat . intersperse outDelimiterBuilder) outBss))+ let outB = mconcat (L.intersperse outNewlineBuilder (fmap (mconcat . L.intersperse outDelimiterBuilder) outBss)) liftIO $ B.hPutBuilder hOut outB return ()
app/App/Data/ColumnDesc.hs view
@@ -35,7 +35,7 @@ Nothing -> lbs realiseColumnDescLazy :: ColumnDesc Text -> ColumnDesc (LBS.ByteString -> LBS.ByteString)-realiseColumnDescLazy cd = fmap realise cd+realiseColumnDescLazy = fmap realise where realise :: Text -> LBS.ByteString -> LBS.ByteString realise t = case t of "id" -> id
bench/Main.hs view
@@ -6,7 +6,6 @@ import Control.Monad import Criterion.Main import Data.ByteString (ByteString)-import Data.List import Data.Vector (Vector) import Data.Word import HaskellWorks.Data.Dsv.Internal.Char (comma, pipe)@@ -15,6 +14,7 @@ import qualified Data.ByteString.Lazy as LBS import qualified Data.Csv as CSV import qualified Data.Csv.Streaming as CSS+import qualified Data.List as L import qualified Data.Vector.Storable as DVS import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL@@ -24,6 +24,9 @@ import qualified HaskellWorks.Data.FromForeignRegion as IO import qualified HaskellWorks.Data.RankSelect.CsPoppy as RS +{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Monoid law, left identity" -}+ loadCassavaStrict :: FilePath -> IO (Vector (Vector ByteString)) loadCassavaStrict filePath = do !bs <- LBS.readFile filePath@@ -39,8 +42,7 @@ pure r loadHwsvStrictIndex :: FilePath -> IO (SVS.DsvCursor ByteString RS.CsPoppy)-loadHwsvStrictIndex filePath =- SVS.mmapCursor comma True filePath+loadHwsvStrictIndex = SVS.mmapCursor comma True loadHwsvStrict :: FilePath -> IO (Vector (Vector ByteString)) loadHwsvStrict filePath = SVS.toVectorVector <$> SVS.mmapCursor comma True filePath@@ -63,13 +65,12 @@ makeBenchCsv :: IO [Benchmark] makeBenchCsv = do entries <- listDirectory "data/bench"- let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+ let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries benchmarks <- forM files $ \file -> return $ mempty <> [bench ("cassava/decode/via-strict/" <> file) (nfIO (loadCassavaStrict file))] <> [bench ("cassava/decode/via-streaming/" <> file) (nfIO (loadCassavaStreaming file))] <> [bench ("hw-dsv/decode/via-strict/" <> file) (nfIO (loadHwsvStrict file))] <> [bench ("hw-dsv/decode/via-lazy/" <> file) (nfIO (loadHwsvLazy file))]- <> [bench ("hw-dsv/decode/via-strict/index/" <> file) (nfIO (loadHwsvStrictIndex file))] <> [bench ("hw-dsv/decode/via-lazy/index/" <> file) (nfIO (loadHwsvLazyIndex file))] return (join benchmarks)@@ -77,7 +78,7 @@ makeBenchW64s :: IO [Benchmark] makeBenchW64s = do entries <- listDirectory "data/bench"- let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+ let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries benchmarks <- forM files $ \file -> return [ env (IO.mmapFromForeignRegion file) $ \v -> bgroup "Creating bit index from mmaped file" $ mempty <> [bench ("mkIbVector with sum" <> file) (whnf (DVS.foldl (+) 0 . SVS.mkIbVector comma) v)]@@ -87,7 +88,7 @@ makeBenchMkInterestBits :: IO [Benchmark] makeBenchMkInterestBits = do entries <- listDirectory "data/bench"- let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+ let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries benchmarks <- forM files $ \file -> return [ env (IO.mmapFromForeignRegion file) $ \(v :: DVS.Vector Word64) -> bgroup "Loading lazy byte string into Word64s" $ mempty <> [bench ("mkIbVector with sum" <> file) (whnf (DVS.foldr (+) 0 . SVS.mkIbVector pipe) v)]
hw-dsv.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: hw-dsv-version: 0.4.1.0+version: 0.4.1.1 synopsis: Unbelievably fast streaming DSV file parser description: Please see the README on Github at <https://github.com/haskell-works/hw-dsv#readme> category: Text, CSV, SIMD, Succinct Data Structures, Data Structures@@ -12,7 +12,7 @@ copyright: 2018-2020 John Ky license: BSD-3-Clause license-file: LICENSE-tested-with: GHC == 8.10.1, GHC == 8.8.3, GHC == 8.6.5, GHC == 8.4.4+tested-with: GHC == 9.2.2, GHC == 9.0.2, GHC == 8.10.7, GHC == 8.8.4, GHC == 8.6.5 build-type: Simple extra-source-files: README.md ChangeLog.md@@ -41,30 +41,30 @@ common appar { build-depends: appar >= 0.1.8 && < 0.2 } common bits-extra { build-depends: bits-extra >= 0.0.1.2 && < 0.1 }-common bytestring { build-depends: bytestring >= 0.10 && < 0.11 }+common bytestring { build-depends: bytestring >= 0.10 && < 0.12 } common cassava { build-depends: cassava >= 0.5.1.0 && < 0.6 } common criterion { build-depends: criterion >= 1.4.1.0 && < 1.6 } common deepseq { build-depends: deepseq >= 1.4 && < 1.5 } common directory { build-depends: directory >= 1.2.2 && < 1.4 }-common doctest { build-depends: doctest >= 0.16.2 && < 0.17 }+common doctest { build-depends: doctest >= 0.16.2 && < 0.21 } common doctest-discover { build-depends: doctest-discover >= 0.2 && < 0.3 }-common generic-lens { build-depends: generic-lens >= 1.2.0.1 && < 1.3 }-common ghc-prim { build-depends: ghc-prim >= 0.4 && < 0.7 }-common hedgehog { build-depends: hedgehog >= 0.5 && < 1.1 }+common generic-lens { build-depends: generic-lens >= 2.2 && < 2.3 }+common ghc-prim { build-depends: ghc-prim >= 0.4 && < 0.9 }+common hedgehog { build-depends: hedgehog >= 0.5 && < 1.2 } common hspec { build-depends: hspec >= 2.4 && < 3 } common hw-bits { build-depends: hw-bits >= 0.7.0.2 && < 0.8 }-common hw-ip { build-depends: hw-ip >= 2.3.4.2 && < 2.5 } common hw-hspec-hedgehog { build-depends: hw-hspec-hedgehog >= 0.1.0.4 && < 0.2 }+common hw-ip { build-depends: hw-ip >= 2.3.4.2 && < 2.5 } common hw-prim { build-depends: hw-prim >= 0.6.2.14 && < 0.7 } common hw-rankselect { build-depends: hw-rankselect >= 0.12.0.2 && < 0.14 } common hw-rankselect-base { build-depends: hw-rankselect-base >= 0.3.2.0 && < 0.4 } common hw-simd { build-depends: hw-simd >= 0.1.1.3 && < 0.2 }-common lens { build-depends: lens >= 4.15 && < 5 }+common lens { build-depends: lens >= 4.15 && < 6 } common mmap { build-depends: mmap >= 0.5.9 && < 0.6 }-common optparse-applicative { build-depends: optparse-applicative >= 0.13 && < 0.16 }+common optparse-applicative { build-depends: optparse-applicative >= 0.13 && < 0.18 } common resourcet { build-depends: resourcet >= 1.1 && < 1.3 } common text { build-depends: text >= 1.2.2 && < 2.0 }-common transformers { build-depends: transformers >= 0.4 && < 0.6 }+common transformers { build-depends: transformers >= 0.4 && < 0.7 } common vector { build-depends: vector >= 0.12.0.1 && < 0.13 } common weigh { build-depends: weigh >= 0.0.6 && < 0.1 } @@ -177,6 +177,7 @@ , vector , weigh type: exitcode-stdio-1.0+ ghc-options: -threaded -rtsopts -with-rtsopts=-N main-is: Space.hs build-depends: hw-dsv hs-source-dirs: weigh@@ -240,7 +241,7 @@ , hw-dsv default-language: Haskell2010 type: exitcode-stdio-1.0- ghc-options: -threaded+ ghc-options: -threaded -rtsopts -with-rtsopts=-N main-is: DoctestDriver.hs HS-Source-Dirs: doctest build-tool-depends: doctest-discover:doctest-discover
src/HaskellWorks/Data/Dsv/Lazy/Cursor.hs view
@@ -11,7 +11,6 @@ import Data.Function import Data.Word-import GHC.Word (Word8) import HaskellWorks.Data.Dsv.Lazy.Cursor.Internal import HaskellWorks.Data.Dsv.Lazy.Cursor.Type import HaskellWorks.Data.Vector.AsVector64s
src/HaskellWorks/Data/Dsv/Lazy/Cursor/Lazy.hs view
@@ -23,6 +23,8 @@ import qualified Data.List as L import qualified Data.Vector as DV +{- HLINT ignore "Reduce duplication" -}+ snippet :: DsvCursor -> LBS.ByteString snippet c = LBS.take (len `max` 0) $ LBS.drop posC $ dsvCursorText c where d = nextField c
src/HaskellWorks/Data/Dsv/Lazy/Cursor/Strict.hs view
@@ -22,8 +22,10 @@ import qualified Data.List as L import qualified Data.Vector as DV +{- HLINT ignore "Reduce duplication" -}+ snippet :: DsvCursor -> Int -> BS.ByteString -> BS.ByteString-snippet c offset bs = BS.take (len `max` 0) $ BS.drop posC $ bs+snippet c offset bs = BS.take (len `max` 0) $ BS.drop posC bs where d = nextField c posC = fromIntegral (dsvCursorPosition c) - offset posD = fromIntegral (dsvCursorPosition d) - offset
src/HaskellWorks/Data/Dsv/Strict/Cursor.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE BangPatterns #-}-{-# LANGUAGE MultiWayIf #-} {-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Dsv.Strict.Cursor
src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal.hs view
@@ -1,11 +1,10 @@-{-# LANGUAGE ExplicitForAll #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Dsv.Strict.Cursor.Internal where import Control.Monad.ST-import Data.Bits (popCount)+import Data.Bits (popCount) import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Bits.BitWise@@ -21,7 +20,7 @@ import qualified Data.Vector.Storable.Mutable as DVSM import qualified HaskellWorks.Data.Dsv.Internal.Char.Word64 as CW -{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}+{- HLINT ignore "Reduce duplication" -} makeIndexes :: Word8 -> DVS.Vector Word64 -> (DVS.Vector Word64, DVS.Vector Word64) makeIndexes delimiter ws = case DVS.createT $ makeIndexes' CW.doubleQuote CW.newline (fillWord64 delimiter) ws of
src/HaskellWorks/Data/Dsv/Strict/Cursor/Internal/Reference.hs view
@@ -1,10 +1,9 @@-{-# LANGUAGE ExplicitForAll #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} module HaskellWorks.Data.Dsv.Strict.Cursor.Internal.Reference where -import Data.Bits (popCount)+import Data.Bits (popCount) import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Bits.BitWise@@ -18,7 +17,8 @@ import qualified Data.Vector.Storable as DVS import qualified HaskellWorks.Data.Dsv.Internal.Char.Word64 as CW -{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}+{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Redundant guard" -} unsafeIndex :: DVS.Vector Word64 -> Int -> Word64 unsafeIndex v i | i < 0 = error $ "Invalid index: " <> show i <> " for vector sized " <> show (DVS.length v)@@ -181,7 +181,7 @@ in unsafeIndex u (ui - 1) + fromIntegral (popCount w) mkDsvIbNlFromStriped :: DVS.Vector Word64 -> DVS.Vector Word64 -> DVS.Vector Word64-mkDsvIbNlFromStriped sv cpcs = DVS.generate ((DVS.length sv) `div` 3) go+mkDsvIbNlFromStriped sv cpcs = DVS.generate (DVS.length sv `div` 3) go where go :: Int -> Word64 go u = let ui = fromIntegral u in if ui > 1 then let svi = ui * 2@@ -198,7 +198,7 @@ in wnl .&. m mkDsvIbDlFromStriped :: DVS.Vector Word64 -> DVS.Vector Word64 -> DVS.Vector Word64-mkDsvIbDlFromStriped sv cpcs = DVS.generate ((DVS.length sv) `div` 3) go+mkDsvIbDlFromStriped sv cpcs = DVS.generate (DVS.length sv `div` 3) go where go :: Int -> Word64 go u = let ui = fromIntegral u in if ui > 1 then let svi = ui * 2
test/HaskellWorks/Data/Dsv/BroadwordSpec.hs view
@@ -12,9 +12,9 @@ import Hedgehog import Test.Hspec -{-# ANN module ("HLint: ignore Redundant do" :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}+{- HLINT ignore "Redundant do" -}+{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Redundant bracket" -} spec :: Spec spec = describe "HaskellWorks.Data.Dsv.BroadwordSpec" $ do
test/HaskellWorks/Data/Dsv/Lazy/CursorSpec.hs view
@@ -14,9 +14,9 @@ import qualified HaskellWorks.Data.Dsv.Lazy.Cursor as SVL import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL -{-# ANN module ("HLint: ignore Redundant do" :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}+{- HLINT ignore "Redundant do" -}+{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Redundant bracket" -} subjectEmpty, subjectSS, subjectSM, subjectMS, subjectMM :: LBS.ByteString expectedEmpty, expectedSS, expectedSM, expectedMS, expectedMM :: [DV.Vector LBS.ByteString]
test/HaskellWorks/Data/Dsv/Strict/Cursor/InternalSpec.hs view
@@ -8,7 +8,6 @@ import Control.Monad.IO.Class import Data.ByteString (ByteString) import Data.Char-import Data.List (isSuffixOf) import HaskellWorks.Data.Bits.PopCount.PopCount1 import HaskellWorks.Data.Dsv.Internal.Char (pipe) import HaskellWorks.Data.FromByteString@@ -17,6 +16,7 @@ import Test.Hspec import qualified Data.ByteString as BS+import qualified Data.List as L import qualified Data.Text as T import qualified Data.Text.Encoding as T import qualified Data.Vector.Storable as DVS@@ -27,15 +27,15 @@ import qualified Hedgehog.Range as R import qualified System.Directory as IO -{-# ANN module ("HLint: ignore Redundant do" :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}+{- HLINT ignore "Redundant do" -}+{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Redundant bracket" -} spec :: Spec spec = describe "HaskellWorks.Data.Dsv.Strict.Cursor.InternalSpec" $ do it "Case 1" $ requireTest $ do entries <- liftIO $ IO.listDirectory "data/bench"- let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+ let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries forM_ files $ \file -> do v <- liftIO $ IO.mmapFromForeignRegion file let !actual = DVS.foldr (\a b -> popCount1 a + b) 0 (fst $ SVS.makeIndexes pipe v)@@ -68,7 +68,7 @@ u === expected it "Case 6" $ requireTest $ do entries <- liftIO $ IO.listDirectory "data/bench"- let files = ("data/bench/" ++) <$> (".csv" `isSuffixOf`) `filter` entries+ let files = ("data/bench/" ++) <$> (".csv" `L.isSuffixOf`) `filter` entries forM_ files $ \file -> do v <- liftIO $ IO.mmapFromForeignRegion file let !actual = fst $ SVS.makeIndexes pipe v
test/HaskellWorks/Data/DsvSpec.hs view
@@ -13,9 +13,9 @@ import qualified HaskellWorks.Data.Dsv.Strict.Cursor.Internal.Reference as SVS -{-# ANN module ("HLint: ignore Redundant do" :: String) #-}-{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}-{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}+{- HLINT ignore "Redundant do" -}+{- HLINT ignore "Reduce duplication" -}+{- HLINT ignore "Redundant bracket" -} spec :: Spec spec = describe "HaskellWorks.Data.DsvSpec" $ do
weigh/Space.hs view
@@ -14,7 +14,7 @@ import qualified HaskellWorks.Data.Dsv.Lazy.Cursor.Lazy as SVLL import qualified HaskellWorks.Data.Dsv.Strict.Cursor as SVS -{-# ANN module ("HLint: ignore Redundant do" :: String) #-}+{- HLINT ignore "Redundant do" -} repeatedly :: (a -> Maybe a) -> a -> [a] repeatedly f a = a:case f a of@@ -47,11 +47,7 @@ Right v -> pure v , action "cassava streaming" $ do fmap (F.toList . CSS.decode CSS.HasHeader) (LBS.readFile infp) :: IO [Vector ByteString]- , action "hw-dsv strict" $ do- v <- loadCsvStrict infp :: IO (Vector (Vector ByteString))- pure v- , action "hw-dsv lazy" $ do- v <- loadCsvLazy infp :: IO [Vector LBS.ByteString]- pure v+ , action "hw-dsv strict" (loadCsvStrict infp :: IO (Vector (Vector ByteString)))+ , action "hw-dsv lazy" (loadCsvLazy infp :: IO [Vector LBS.ByteString]) ] return ()