diff --git a/benchmark/Main.hs b/benchmark/Main.hs index 172e97d0..0a43956a 100644 --- a/benchmark/Main.hs +++ b/benchmark/Main.hs @@ -7,11 +7,12 @@ import qualified DataFrame as D import qualified DataFrame.Functions as F import Control.DeepSeq (NFData (..)) -import Control.Monad (void) +import Control.Monad (void, when) import Criterion.Main import DataFrame.Internal.DataFrame (forceDataFrame) import DataFrame.Operations.Join import DataFrame.Operators +import System.Directory (doesFileExist) import System.Process hiding (env) import System.Random.Stateful @@ -95,6 +96,15 @@ groupByExplorer = do parseFile :: String -> IO () parseFile = void . D.readCsv +covidCsv :: String +covidCsv = "./data/effects-of-covid-19-on-trade-at-15-december-2021-provisional.csv" + +-- The 9.5 MB covid input is not shipped in the sdist; no-op when absent. +parseFileIfPresent :: String -> IO () +parseFileIfPresent path = do + exists <- doesFileExist path + when exists (parseFile path) + parseHousingCSV :: IO () parseHousingCSV = parseFile "./data/housing.csv" @@ -223,10 +233,7 @@ main = do ] , bgroup "effects-of-covid-19-on-trade-at-15-december-2021-provisional.csv (9.1 MB)" - [ bench "Attoparsec" $ - nfIO $ - parseFile - "./data/effects-of-covid-19-on-trade-at-15-december-2021-provisional.csv" + [ bench "Attoparsec" $ nfIO $ parseFileIfPresent covidCsv ] , bgroup "join/inner/1:1" diff --git a/dataframe-operations/src/DataFrame/Functions.hs b/dataframe-operations/src/DataFrame/Functions.hs index 5834bffb..c78d9483 100644 --- a/dataframe-operations/src/DataFrame/Functions.hs +++ b/dataframe-operations/src/DataFrame/Functions.hs @@ -2,7 +2,6 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-} -{-# LANGUAGE IncoherentInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} diff --git a/dataframe.cabal b/dataframe.cabal index b7310c6f..90965cfe 100644 --- a/dataframe.cabal +++ b/dataframe.cabal @@ -28,6 +28,13 @@ extra-source-files: cbits/arrow_abi.h tests/data/*.parquet tests/data/unstable_csv/*.csv tests/data/unstable_csv/*.tsv + data/housing.csv + data/starwars.csv + data/chipotle.tsv + data/measurements.txt + benchmark/pandas/*.py + benchmark/polars/*.py + benchmark/explorer/*.exs -- tests/data/*.md -- tests/data/*.bin -- tests/data/*.json @@ -290,6 +297,7 @@ benchmark dataframe-benchmark build-depends: base >= 4 && < 5, criterion >= 1 && < 2, deepseq >= 1.4 && < 2, + directory >= 1.3 && < 2, process >= 1.6 && < 2, dataframe >= 3.5 && < 3.6, dataframe-core >= 2.4 && < 2.5,