matchInstEnv accounts for 50% of typechecker time
I created a profile of GHC compiling a large commercial project and noticed that matchInstEnv accounted for 50% of time spent typechecking the project. That seems like rather a lot. Zooming into just matchInstEnv..
It seems that the cost is split quite evenly between tc_unify_tys_fg, tc_match_tys and $instIsVisible, instIsVisible looks quite cheap so I wondered if this function is getting hammered an ungodly number of times.

