Code generated by GHC 9.2.1 performs worse than code generated by GHC 9.0.1
Summary
The benchmark suite for my perceptual hash library shows that various functions perform worse
Steps to reproduce
cabal get -s perceptual-hash
cd perceptual-hash
cabal run phash-bench -w ghc-9.2.1
cabal run phash-bench -w ghc-9.0.1
Results for GHC 9.2.1:
benchmarking fileHash/cat.png
time 32.49 ms (32.24 ms .. 32.91 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 33.40 ms (33.15 ms .. 33.74 ms)
std dev 586.7 μs (441.1 μs .. 815.2 μs)
benchmarking fileHash/frog.jpeg
time 24.10 ms (23.86 ms .. 24.37 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 23.84 ms (23.67 ms .. 24.01 ms)
std dev 398.6 μs (288.4 μs .. 493.5 μs)
benchmarking fileHash/frog.png
time 18.53 ms (18.35 ms .. 18.70 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 18.22 ms (18.11 ms .. 18.32 ms)
std dev 263.0 μs (208.5 μs .. 360.5 μs)
benchmarking fileHash/liz-taylor.webp
time 119.1 ms (118.4 ms .. 120.6 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 122.1 ms (120.7 ms .. 125.1 ms)
std dev 3.276 ms (1.651 ms .. 4.730 ms)
variance introduced by outliers: 11% (moderately inflated)
benchmarking fileHash/liz-taylor.png
time 114.7 ms (111.0 ms .. 117.8 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 115.1 ms (113.9 ms .. 118.0 ms)
std dev 2.474 ms (1.082 ms .. 3.903 ms)
variance introduced by outliers: 11% (moderately inflated)
Results for GHC 9.0.1:
benchmarking fileHash/cat.png
time 24.13 ms (23.95 ms .. 24.43 ms)
0.999 R² (0.998 R² .. 1.000 R²)
mean 23.84 ms (23.68 ms .. 24.04 ms)
std dev 422.7 μs (290.7 μs .. 611.4 μs)
benchmarking fileHash/frog.jpeg
time 19.12 ms (18.84 ms .. 19.40 ms)
0.999 R² (0.998 R² .. 1.000 R²)
mean 18.36 ms (18.15 ms .. 18.58 ms)
std dev 518.9 μs (447.8 μs .. 620.8 μs)
benchmarking fileHash/frog.png
time 13.07 ms (12.96 ms .. 13.16 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 13.07 ms (13.00 ms .. 13.16 ms)
std dev 199.7 μs (156.9 μs .. 255.3 μs)
benchmarking fileHash/liz-taylor.webp
time 75.99 ms (75.22 ms .. 76.79 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 76.66 ms (76.15 ms .. 77.34 ms)
std dev 961.0 μs (510.2 μs .. 1.312 ms)
benchmarking fileHash/liz-taylor.png
time 80.29 ms (79.83 ms .. 80.88 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 81.75 ms (81.02 ms .. 84.26 ms)
std dev 2.085 ms (669.1 μs .. 3.428 ms)
Expected behavior
Similar performance of generated code in GHC 9.2.1
Environment
- GHC version used: GHCs 9.2.1 and 9.0.1
Optional:
- Operating System: Linux (Ubuntu 20.04)
- System Architecture: x86-64