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) coverIntandWord, but not sized alternatives -
SPECIALI[SZ]Epragmas 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, theEnuminstance forIntuses specialisedenumFromTocode, theWordversion uses generic code;base/GHC/Enum.hsandbase/GHC/Word.hs) -
some RULEShelp optimizing the special cases forIntfurther (again, see theEnuminstance forIntfor 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 |