Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Register
  • Sign in
  • GHC GHC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 5.5k
    • Issues 5.5k
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 631
    • Merge requests 631
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Model experiments
  • Analytics
    • Analytics
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Glasgow Haskell CompilerGlasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #17966

Code generated by GHC 8.10.1 is slower than code generated by GHC 8.6.5 (or 8.8.3)

Summary

Performance of perceptual-hash has degraded in GHC 8.8.3 and 8.10.1

Steps to reproduce

git repo here, run cabal bench phash-bench -w $GHC_VERSION, viz.

cabal bench phash-bench -w ghc-8.6.5
Benchmark phash-bench: RUNNING...
benchmarking fileHash/cat.png
time                 23.64 ms   (23.56 ms .. 23.75 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 23.79 ms   (23.71 ms .. 23.98 ms)
std dev              280.2 μs   (123.9 μs .. 514.1 μs)

benchmarking fileHash/frog.jpeg
time                 19.69 ms   (19.61 ms .. 19.80 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 19.49 ms   (19.34 ms .. 19.57 ms)
std dev              269.8 μs   (171.2 μs .. 385.7 μs)

benchmarking fileHash/frog.png
time                 13.44 ms   (13.36 ms .. 13.51 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 13.59 ms   (13.54 ms .. 13.68 ms)
std dev              161.9 μs   (97.73 μs .. 261.4 μs)

Benchmark phash-bench: FINISH
cabal bench phash-bench -w ghc-8.6.5
Benchmark phash-bench: RUNNING...
benchmarking fileHash/cat.png
time                 24.32 ms   (24.20 ms .. 24.44 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 24.55 ms   (24.43 ms .. 24.80 ms)
std dev              365.5 μs   (176.7 μs .. 570.9 μs)

benchmarking fileHash/frog.jpeg
time                 19.83 ms   (19.74 ms .. 19.93 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 19.64 ms   (19.44 ms .. 19.74 ms)
std dev              313.0 μs   (208.3 μs .. 409.0 μs)

benchmarking fileHash/frog.png
time                 14.02 ms   (13.99 ms .. 14.06 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 14.03 ms   (14.01 ms .. 14.05 ms)
std dev              62.24 μs   (40.17 μs .. 94.45 μs)

Benchmark phash-bench: FINISH
cabal bench phash-bench -w ghc-8.10.1
Benchmark phash-bench: RUNNING...
benchmarking fileHash/cat.png
time                 27.82 ms   (27.76 ms .. 27.87 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 28.35 ms   (28.18 ms .. 28.71 ms)
std dev              599.3 μs   (249.4 μs .. 965.5 μs)

benchmarking fileHash/frog.jpeg
time                 21.76 ms   (21.66 ms .. 21.95 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 21.62 ms   (21.55 ms .. 21.69 ms)
std dev              157.5 μs   (114.8 μs .. 237.0 μs)

benchmarking fileHash/frog.png
time                 15.69 ms   (15.66 ms .. 15.72 ms)
                     1.000 R²   (1.000 R² .. 1.000 R²)
mean                 15.76 ms   (15.72 ms .. 15.82 ms)
std dev              106.6 μs   (54.32 μs .. 189.3 μs)

Benchmark phash-bench: FINISH

Expected behavior

Same performance in GHC 8.8.3 and GHC 8.10.1

Environment

  • GHC version used: 8.10.1, 8.8.3, 8.6.5

Optional:

  • Operating System: Linux Ubuntu 18.04.4 LTS
  • System Architecture: x86_64
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking