#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): Thanks for the direction. Apologies for taking so long to get back; I've had the flu. `-v3` output is fascinating (thanks, I wasn't aware of it), because nothing is marked as slow. I'll look into building a profiled compiler. The pause happens immediately before `1e100000000 :: Fractional p => p` is output. Here's the output for anyone following along's interest: {{{ Expanse:ghc julian$ ./inplace/bin/ghc-stage2 -v3 -Rghc-timing -e ':t 1e100000000' Glasgow Haskell Compiler, Version 8.7.20181012, stage 2 booted by GHC version 8.4.3 Using binary package database: /Users/julian/code/haskell/ghc/inplace/lib/package.conf.d/package.cache package flags [] loading package database /Users/julian/code/haskell/ghc/inplace/lib/package.conf.d wired-in package ghc-prim mapped to ghc-prim-0.5.3 wired-in package integer-wired-in mapped to integer-gmp-1.0.2.0 wired-in package base mapped to base-4.12.0.0 wired-in package rts mapped to rts wired-in package template-haskell mapped to template-haskell-2.14.0.0 wired-in package ghc mapped to ghc-8.7 *** Parser [source]: !!! Parser [source]: finished in 0.83 milliseconds, allocated 0.489 megabytes *** Desugar: *** Simplify [expr]: !!! Simplify [expr]: finished in 0.64 milliseconds, allocated 0.367 megabytes *** CorePrep [expr]: !!! CorePrep [expr]: finished in 5.45 milliseconds, allocated 5.770 megabytes *** ByteCodeGen [Ghci1]: !!! ByteCodeGen [Ghci1]: finished in 0.52 milliseconds, allocated 0.488 megabytes Loading package ghc-prim-0.5.3 ... linking ... done. Loading package integer-gmp-1.0.2.0 ... linking ... done. *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name libiconv.dylib *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name liblibiconv.dylib *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name iconv.lib *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name libiconv.lib *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name libiconv.dll.a *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name iconv.dll.a *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name libiconv.a *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name iconv.a *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name libiconv *** gcc: gcc -fno-stack-protector -DTABLES_NEXT_TO_CODE -B/Users/julian/code/haskell/ghc/libraries/base/dist-install/build --print-file-name iconv Loading package base-4.12.0.0 ... linking ... done. Search directories (user): Search directories (gcc): *** Parser [source]: !!! Parser [source]: finished in 0.15 milliseconds, allocated 0.153 megabytes *** Desugar: *** Simplify [expr]: !!! Simplify [expr]: finished in 0.32 milliseconds, allocated 0.203 megabytes *** CorePrep [expr]: !!! CorePrep [expr]: finished in 0.16 milliseconds, allocated 0.112 megabytes *** ByteCodeGen [Ghci1]: !!! ByteCodeGen [Ghci1]: finished in 0.31 milliseconds, allocated 0.299 megabytes *** Parser [source]: !!! Parser [source]: finished in 0.20 milliseconds, allocated 0.215 megabytes *** Desugar: *** Simplify [expr]: !!! Simplify [expr]: finished in 0.35 milliseconds, allocated 0.224 megabytes *** CorePrep [expr]: !!! CorePrep [expr]: finished in 0.15 milliseconds, allocated 0.089 megabytes *** ByteCodeGen [Ghci1]: !!! ByteCodeGen [Ghci1]: finished in 0.36 milliseconds, allocated 0.351 megabytes *** Parser [source]: !!! Parser [source]: finished in 0.09 milliseconds, allocated 0.043 megabytes 1e100000000 :: Fractional p => p Leaving GHCi. *** Deleting temp files: Deleting: *** Deleting temp dirs: Deleting: <<ghc: 223511272 bytes, 80 GCs, 12572972/49798120 avg/max bytes residency (9 samples), 154M in use, 0.000 INIT (0.003 elapsed), 4.102 MUT (4.434 elapsed), 0.172 GC (0.187 elapsed) :ghc>> }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/15646#comment:48> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler