[Haskell-cafe] Re: C-like Haskell
Ross Mellgren
rmm-haskell at z.odi.ac
Wed Jan 28 20:33:21 EST 2009
Yeah, you know after sending the email (never a better time) I noticed
that the C version wasn't spitting out the right answer. I'm not
really sure why, I just replaced bigint with int64_t from stdint.h.
-Ross
On Jan 28, 2009, at 8:32 PM, Benedikt Huber wrote:
> Ross Mellgren schrieb:
>> Duncan, I think you must have some magics -- on my machine the
>> original code also takes forever.
>> Running with +RTS -S indicates it's allocating several gig of
>> memory or more.
>> Applying some bang patterns gives me ~8s for 10^8 and somewhat more
>> than a minute for 10^9:
> Hi,
> same here, with bang patterns ~100s / 1Mb but
>
>> The C program is quite fast:
>> rmm at Hugo:~$ time ./circ-orig
>> 1302219321
> looks wrong to me
>> real 0m1.073s
>
> cafe(0) $ time ./gauss
> 3141592649589764829
> real 0m17.894s
>
> So my 32-bit machine is really slow ...
>
> benedikt
>
>
>>> On Wed, 2009-01-28 at 16:42 -0800, drblanco wrote:
>>>
>>>> I do already have the number I wanted, but was wondering how this
>>>> could be
>>>> made faster, or even why it's so slow. This is all on GHC 6.8.3
>>>> under OS X
>>>> Intel, using ghc -O2.
>>>
>>> I'm not exactly sure what's different, but for me it works pretty
>>> well.
>>> I put back in the Int64 type signature.
>>>
>>>> For comparison, the C code below runs in <1 second.
>>>
>>> You've got a faster machine than me :-)
>>>
>>> I compiled both the Haskell and C versions to standalone executables
>>> with ghc/gcc -O2 and ran them with time.
>>>
>>> C version:
>>> $ time ./circ
>>> 3141592649589764829
>>>
>>> real 0m2.430s
>>> user 0m2.428s
>>> sys 0m0.000s
>>>
>>> Haskell version:
>>> time ./circ2
>>> 3141592653589764829
>>>
>>> real 0m2.753s
>>> user 0m2.756s
>>> sys 0m0.000s
>>>
>>>
>>> Not too bad I'd say! :-)
>>>
>>> I was using ghc-6.10 for this test. It would appear that ghc-6.8
>>> is a
>>> bit slower, I get:
>>>
>>> 3141592653589764829
>>>
>>> real 0m5.767s
>>> user 0m5.768s
>>> sys 0m0.000s
>>>
>>> Now the other difference is that I'm using a 64bit machine so
>>> perhaps
>>> ghc just produces terrible code for Int64 on 32bit machines.
>>>
>>> Duncan
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list