Skip to content
  • Simon Peyton Jones's avatar
    Split up coercionKind · 0a4ca9eb
    Simon Peyton Jones authored and Marge Bot's avatar Marge Bot committed
    This patch implements the idea in #17515, splitting `coercionKind` into:
    
     * `coercion{Left,Right}Kind`, which computes the left/right side of the
        pair
     * `coercionKind`, which computes the pair of coercible types
    
    This is reduces allocation since we frequently only need only one side
    of the pair. Specifically, we see the following improvements on x86-64
    Debian 9:
    
    | test     | new        | old           | relative chg. |
    | :------- | ---------: | ------------: | ------------: |
    | T5030	   | 695537752  | 747641152.0   | -6.97%        |
    | T5321Fun | 449315744  | 474009040.0   | -5.21%        |
    | T9872a   | 2611071400 | 2645040952.0  | -1.28%        |
    | T9872c   | 2957097904 | 2994260264.0  | -1.24%        |
    | T12227   | 773435072  | 812367768.0   | -4.79%        |
    | T12545   | 3142687224 | 3215714752.0  | -2.27%        |
    | T14683   | 9392407664 | 9824775000.0  | -4.40%        |
    
    Metric Decrease:
        T12545
        T9872a
        T14683
        T5030
        T12227
        T9872c
        T5321Fun
        T9872b
    0a4ca9eb