[GHC] #9159: cmm case, binary search instead of jump table

GHC ghc-devs at haskell.org
Mon Jun 2 12:06:52 UTC 2014


#9159: cmm case, binary search instead of jump table
------------------------------+--------------------------------------------
       Reporter:  wojteknar   |             Owner:
           Type:  bug         |            Status:  new
       Priority:  low         |         Milestone:
      Component:  Compiler    |           Version:  7.8.2
       Keywords:              |  Operating System:  Unknown/Multiple
   Architecture:              |   Type of failure:  Runtime performance bug
  Unknown/Multiple            |         Test Case:
     Difficulty:  Unknown     |          Blocking:
     Blocked By:              |
Related Tickets:              |
------------------------------+--------------------------------------------
 I'm not sure if this is qualifies as a bug or feature request.

 For case expressions where the scrutinee is Int#,or Int, or probably
 anything else numerical, GHC generates binary search, where a jump table
 could easily be used instead. The functions toChunk1# and toChunk2# yield
 suboptimal code. I found a satisfactory workaround, toChunk3# uses Enum
 and it is fine.

 For the attached code it probably does not matter much, but I have 65
 cases in my real code, trying to implement a variant of ByteString, which
 will have the lowest possible storage overhead (just the info table
 pointer == one word) for lengths up to 64 bytes.

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


More information about the ghc-tickets mailing list