[GHC] #15646: ghci takes super long time to find the type of large fractional number

GHC ghc-devs at haskell.org
Mon Oct 22 10:31:34 UTC 2018


#15646: ghci takes super long time to find the type of large fractional number
-------------------------------------+-------------------------------------
        Reporter:  Johannkokos       |                Owner:
                                     |  JulianLeviston
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.6.1
       Component:  GHCi              |              Version:  8.4.3
      Resolution:                    |             Keywords:  newcomer
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by JulianLeviston):

 Okay... I think I've put all the pieces into place now. I'm a little
 confused as to why, but `dsLit` seems to still be taking a while to
 desugar with the `fromRational (readRational txt)` pattern in place.

 I'm not 100% sure I've done what was intended...

 {{{
     HsRat _ fl ty -> do
       let txt = case fl of
                   THFL { thfl_text = SourceText t } -> t
                   FL { fl_text = SourceText t } -> t
           val = fromRational (readRational txt)
       num   <- mkIntegerExpr (numerator val)
       denom <- mkIntegerExpr (denominator val)
       return (mkCoreConApps ratio_data_con [Type integer_ty, num, denom])
 }}}

 However if I do `./inplace/bin/ghc-stage2 --interactive` then `:t
 1e10000000` and it takes over 3 seconds still. (One less digit takes under
 1 second) so the bug is still there — it's now taking *less* time to
 typecheck, but the desugarer seems to still be catching me out.

 I'll attach a patch file so you can see what I've done to now.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15646#comment:41>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list