Int / Word / IntN / WordN are unequally optimized
A lot of thought has been put into optimizing usage of Int
, but not all of these tweaks have been copied for usage of Word
, and the specific-size versions of both have even fewer optimizations. The consequence is that switching from signed to unsigned, or from unspecified to specified size, can result in dramatic performance loss.
-
builtin rules (
prelude/PrelRules
) coverInt
andWord
, but not sized alternatives -
SPECIALI[SZ]E
pragmas coverInt
, but little of the others. Try
find libraries/ -name _darcs -prune -o -name *hs |
xargs grep SPECIAL | grep '\<Int\|\<Word'
-
some instances have special cases for
Int
, but not for the others (for instance, theEnum
instance forInt
uses specialisedenumFromTo
code, theWord
version uses generic code;base/GHC/Enum.hs
andbase/GHC/Word.hs
) -
some
RULES
help optimizing the special cases forInt
further (again, see theEnum
instance forInt
for an example)
See this thread "Int vs Word performance?" for more discussion.
related tickets: #2270 (closed), #3051 (closed)
Trac metadata
Trac field | Value |
---|---|
Version | 6.11 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |