Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d7575f8
Flatten the list of FileSystem.Handle benchmarks
harendra-kumar Jun 15, 2026
e115338
Rename FileSystem.Handle benchmark names with better description
harendra-kumar Jun 15, 2026
a9c5d65
Flatten the list of benchmarks in Unicode.Stream
harendra-kumar Jun 15, 2026
18b5372
Improve benchmark names in Unicode.Stream
harendra-kumar Jun 15, 2026
fc7db6b
Move benchmarks from FileSystem.Handle to Unicode.Stream
harendra-kumar Jun 15, 2026
b8870a5
Move the cross module benchmarks to CrossModule suite
harendra-kumar Jun 15, 2026
bb85d6f
Consolidate FileSystem.Handle benchmark files
harendra-kumar Jun 15, 2026
2df7e3e
Move file based parseMany benchmarks to CrossModule suite
harendra-kumar Jun 15, 2026
9bba096
Move benchmarks from Array/Stream to CrossModule
harendra-kumar Jun 16, 2026
fceb4f5
Move Split/SplitChunks files to CrossModule benchmark
harendra-kumar Jun 16, 2026
d44d3ed
Commit the missing file CrossModule.hs
harendra-kumar Jun 16, 2026
b3230fb
Use "streamly-core" import instead of "streamly"
harendra-kumar Jun 16, 2026
acf9ca6
Add CrossModule to extra-source-files
harendra-kumar Jun 16, 2026
aa0271b
Increase heap limit for Data.Stream benchmark
harendra-kumar Jun 16, 2026
3aa034d
Merge Data.Array and Data.Array.Stream benchmarks
harendra-kumar Jun 16, 2026
27afe33
Separate Array/Type.hs benchmarks from Array.hs
harendra-kumar Jun 16, 2026
a51aafa
Breakup MutArray module, create MutArray/Type.hs
harendra-kumar Jun 16, 2026
28263be
Push common Array benchmarks to common files
harendra-kumar Jun 16, 2026
cf20cae
Make some updates to the benchmarking readme
harendra-kumar Jun 16, 2026
45383e8
Fix warnings in Array benchmarks
harendra-kumar Jun 16, 2026
108499d
Sync CI benchmark list with current benchmarks
harendra-kumar Jun 15, 2026
d3820b9
Sync Targets with current state of benchmarks
harendra-kumar Jun 16, 2026
c63d0b4
Make the names of Array Stream benchmarks more intuitive
harendra-kumar Jun 16, 2026
4118616
Fix memory requirements of benchmarks
harendra-kumar Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/regression-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ on:
#----------------------------------------------------------------------
#-- Benchmarks listed in alphabetical order
#----------------------------------------------------------------------
# Removed Data.Fold.Prelude - was failing for some reason (memory issue?)
jobs:
build:
name: "Comparison: master vs PR (ubuntu-latest ghc-9.14.1)"
Expand All @@ -27,8 +26,8 @@ jobs:
CI_BENCHMARKS_WITH_CUTOFF: >-
Data.Array
Data.Array.Generic
Data.Array.Stream
Data.Fold
Data.Fold.Prelude
Data.MutArray
Data.MutByteArray.DeriveSerialize
Data.MutByteArray.DeriveUnboxGeneric
Expand All @@ -37,7 +36,9 @@ jobs:
Data.ParserK
Data.ParserK.Chunked
Data.ParserK.Chunked.Generic
Data.Pipe
Data.RingArray
Data.Scan
Data.Scanl
Data.Scanl.Concurrent
Data.Stream
Expand All @@ -49,6 +50,7 @@ jobs:
Data.StreamK:6
Data.Unfold
Data.Unfold.Prelude
CrossModule
FileSystem.DirIO
FileSystem.Handle
Unicode.Parser
Expand Down
40 changes: 40 additions & 0 deletions benchmark/Streamly/Benchmark/CrossModule.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
--
-- Module : CrossModule
-- Copyright : (c) 2019 Composewell Technologies
-- License : BSD-3-Clause
-- Maintainer : streamly@composewell.com
-- Stability : experimental
-- Portability : GHC
--
-- Driver for benchmarks that combine operations from multiple library modules,
-- primarily to test fusion and performance across module boundaries (e.g. file
-- I/O fused with stream folds, chunking and splitting operations).

import Test.Tasty.Bench hiding (env)
import Streamly.Benchmark.Common
import Streamly.Benchmark.Common.Handle

import qualified CrossModule.FileSystem as FileSystem
import qualified CrossModule.Split as Split
import qualified CrossModule.SplitChunks as SplitChunks

moduleName :: String
moduleName = "CrossModule"

main :: IO ()
main = do
env <- mkHandleBenchEnv
defaultMain (allBenchmarks env)

where

allBenchmarks env =
let allBenches =
FileSystem.benchmarks env
++ Split.benchmarks env
++ SplitChunks.benchmarks env
get x = map snd $ filter ((==) x . fst) allBenches
o_1_space = get SpaceO_1
in
[ bgroup (o_1_space_prefix moduleName) o_1_space
]
Loading
Loading