Slower Data.Foldable.maximumBy,minimumBy
Summary
Data.Foldable.maximumBy and Data.Foldable.minimumBy are slower in 9.2.5 compared to 8.10.7.
8.10.7:
benchmarking maximumBy
time 5.418 ms (5.362 ms .. 5.467 ms)
0.999 R² (0.998 R² .. 1.000 R²)
mean 5.470 ms (5.432 ms .. 5.512 ms)
std dev 114.4 μs (92.09 μs .. 148.8 μs)
benchmarking minimumBy
time 5.470 ms (5.454 ms .. 5.484 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 5.459 ms (5.451 ms .. 5.467 ms)
std dev 23.79 μs (19.56 μs .. 30.25 μs)
9.2.5:
benchmarking maximumBy
time 8.138 ms (8.085 ms .. 8.191 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 8.158 ms (8.127 ms .. 8.194 ms)
std dev 95.65 μs (69.92 μs .. 152.0 μs)
benchmarking minimumBy
time 7.980 ms (7.945 ms .. 8.019 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 7.944 ms (7.911 ms .. 7.971 ms)
std dev 89.16 μs (71.76 μs .. 110.6 μs)
import Criterion.Main
import Data.Foldable
main :: IO ()
main = defaultMain
[ env (pure xs_) $ \xs -> bgroup ""
[ bench "maximumBy" $ whnf (maximumBy compare) xs
, bench "minimumBy" $ whnf (minimumBy compare) xs
]
]
where
xs_ = [1..2^20] :: [Int]