I updated John's benchmark https://gist.github.com/michaelt/7f89dc8b366b30bb6acc Here are the results I got. As I said in the readme, this is the perfect test for conduit's fusion system. The difference from Pipes is just the avoidance of piping; one could also write direct functions, like
filter :: Monad m => (a -> Bool) -> Producer a m r -> Producer a m r Apart from that, the only difference would be that between Step (a :> rest) and Respond a (\() -> rest) ... right? Step has an extra constructor, Respond hides the 'rest' behind a trivial function. filter (\x -> x `mod` 2 == 0) . map (+1) . drop 1000 . map (+1) . filter even . fromList basic tests passes tests Finished in 0.0007 seconds 1 example, 0 failures benchmarking basic/stream time 83.72 ms (74.88 ms .. 89.07 ms) 0.990 R² (0.984 R² .. 0.998 R²) mean 84.65 ms (81.77 ms .. 90.04 ms) std dev 6.301 ms (3.204 ms .. 9.272 ms) variance introduced by outliers: 19% (moderately inflated) benchmarking basic/iostreams time 259.1 ms (230.2 ms .. 288.6 ms) 0.996 R² (0.989 R² .. 1.000 R²) mean 259.6 ms (251.4 ms .. 265.8 ms) std dev 8.216 ms (3.490 ms .. 11.14 ms) variance introduced by outliers: 16% (moderately inflated) benchmarking basic/pipes time 226.0 ms (198.4 ms .. 246.4 ms) 0.988 R² (0.954 R² .. 1.000 R²) mean 240.8 ms (228.6 ms .. 262.2 ms) std dev 21.00 ms (6.224 ms .. 29.73 ms) variance introduced by outliers: 16% (moderately inflated) benchmarking basic/conduit time 99.89 ms (89.77 ms .. 107.4 ms) 0.986 R² (0.957 R² .. 0.997 R²) mean 94.71 ms (82.12 ms .. 100.8 ms) std dev 12.84 ms (5.137 ms .. 21.08 ms) variance introduced by outliers: 43% (moderately inflated) benchmarking basic/simple-conduit time 201.3 ms (178.7 ms .. 213.6 ms) 0.994 R² (0.978 R² .. 1.000 R²) mean 196.2 ms (187.7 ms .. 200.1 ms) std dev 6.333 ms (3.048 ms .. 7.932 ms) variance introduced by outliers: 14% (moderately inflated) benchmarking basic/fusion time 124.7 ms (112.6 ms .. 131.7 ms) 0.993 R² (0.983 R² .. 0.999 R²) mean 123.5 ms (119.6 ms .. 132.0 ms) std dev 7.873 ms (2.680 ms .. 12.60 ms) variance introduced by outliers: 12% (moderately inflated) -- You received this message because you are subscribed to the Google Groups "Haskell Pipes" group. To unsubscribe from this group and stop receiving emails from it, send an email to haskell-pipes+unsubscr...@googlegroups.com. To post to this group, send email to haskell-pipes@googlegroups.com.