Skip to content

Slowdown on GHC 9.4 when fixity-th configure flag is enabled #941

@Gabriella439

Description

@Gabriella439

Describe the bug

ormolu is significantly slower when formatting expressions that mix operators of different fixities if ormolu was built with fixity-th enabled (which is the default).

To Reproduce

To reproduce this behavior, build ormolu with the fixity-th flag enabled (which is the default) and then format the following file:

a = b =. c <$> d

This will take a while (≈ 43 seconds on my machine).

The problem disappears if you build ormolu without the fixity-th flag or if you build using GHC 9.2 or older. In those cases formatting speed goes back to normal (≈ 0.2 seconds).

Expected behavior

The performance with fixity-th shouldn't be significantly slower than without fixity-th. My understanding is that the fixity-th flag is supposed to be an optimization (to compile the fixity look-up table at compile-time using TemplateHaskell instead of decoding the look-up table at runtime) but in this case it's actually significantly less efficient due to some change introduced in GHC 9.4.

Environment

Metadata

Metadata

Assignees

Labels

bug-upstreamSomething upstream is not working.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions