[Haskell-cafe] Re[4]: [Haskell] Google Summer of Code
Bulat Ziganshin
bulat.ziganshin at gmail.com
Wed Feb 11 16:11:39 EST 2009
Hello John,
Wednesday, February 11, 2009, 11:55:47 PM, you wrote:
>> it's exactly example of tight loop. and let's compare HP code written
>> for this task with analogous code written in C. i expect that haskell
>> code is much more complex
> I think it's fair to point out that tight loops are nearly always the
> biggest bottlenecks of code, so generating good code for tight loops
> is pretty important.
it's important, but doesnt't make whole game. and while i said that
ghc improved tight loops compilation, this doesn't mean that it
becomes the same as in gcc. it just started to put loop variables into
register
> And ghc is still making large improvements with
> each release, whereas gcc isn't likely to get significantly better.
yes, it's close to perfect
>> afaiu, it's 20-line equivalent of 2-line C code:
>>
>> for (i=...)
>> a[i] = b[i]
>>
>> does this need any more comments?
> I think you've misunderstood my code. Look at Oleg's IterateeM and
> see if you think that's really all it's doing.
what else does the code that you've citated? you are wrote that it
just copies 16-bit words into doubles
> Use libsndfile for comparison. http://www.mega-nerd.com/libsndfile/.
it's one method of miscomparing haskell to C - compare hand-tuned
haskell code with some C code which may be just not optimal. ig you
want to make fair comparison, you should write best code in both
languages
> I actually haven't looked at the code, although it's very highly
> regarded in the audio community (and I've seen the author post on this
> list on occasion). Using libsndfile-1.0.18:
> wc wav.c
> 1786 7833 57922 wav.c
> compared to my source:
> wc Wave.hs
> 412 2215 15472 Wave.hs
> And there you are. I will admit that I have implemented the entire
> wave spec, but only because of lack of time.
when you don't need speed, you may write more compact code in haskell
than in C. so the best way is to split your task into
speed-critical part and the rest and use C++ for the first and Haskell
for the second
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list