returning to cost of Integer

Lennart Augustsson lennart at augustsson.net
Mon Jul 31 20:13:40 EDT 2006


A more clever representation of Integer could unbox numbers in big  
range.
But that would require some runtime support, I think.

	-- Lennart

On Jul 31, 2006, at 11:19 , Duncan Coutts wrote:

> On Mon, 2006-07-31 at 14:32 +0400, Serge D. Mechveliani wrote:
>> Dear GHC developers,
>>
>> Long ago you wrote that GHC has made  Integer  only about  3/2  times
>> slower than  Int.
>> I tested this once, and then all this time I have been relying on  
>> this.
>> Now, with
>>           ghc-6.4.1  compiled for Linux - i386-unknown,
>>                      running under Debian Linux, Intel Pentium III
>>                      under  ghc -O,
>>
>> I have an occasion to repeat the test on a certain simple program for
>> processing lists of length 7 over  Integer.
>>
>> And  Integer  shows  2.55  times slower  (11.2 sec against 4.4).
>>
>> Showld we somehow agree that
>>                         cost(Integer)/cost(Int)  in GHC  is about   
>> 2.55
>>
>> or maybe we are missing something?
>
> The cost difference is varies with the context. In the case that the
> Int/Integer is always boxed then we might expect a constant factor
> between Int and Integer (at least for numbers that fit in an Int).
>
> However because Int is often unboxable where as Integer is never
> unboxable there are certainly programs where the factor is much much
> greater than x2 or x3. If the Int can be unboxed into an Int# then the
> operations are very quick indeed as they are simple machine  
> primitives.
>
> As an extreme example, I just tried with one of my current simple
> ByteString benchmarks. If we swap Int for Integer in the inner loop of
> ByteString.map then the time to evaluate (map f . map g) s  
> increases by
> 37 times!
>
> So actually that's not to say that Integer is slow, but rather that in
> many cases GHC is really pretty good at optimising right down to  
> the low
> level details. The representation of Integer prevents many of these
> optimisations.
>
> So as I said, the ratio really does depend on what you're doing.
>
> Duncan
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> Glasgow-haskell-users at haskell.org
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users



More information about the Glasgow-haskell-users mailing list