[Haskell-cafe] Re: MD5 performance optimizations, and GHC -via-C producing segfaulting binary

Salvatore Insalaco kirby81 at gmail.com
Tue May 20 16:24:20 EDT 2008


2008/5/20 Andrew Coppin <andrewcoppin at btinternet.com>:
> Ah, so *that's* what bang patterns do?

Exactly. If you have a pattern (even a simple one like 'n'), and you
prefix it with a bang (!), the function will force its evaluation.

>> 2) make_block_bs is sub-optimal, and very critical to performance.
>
> Yeah, so I see. (60% time spent here... ouch!) I'll bet that's where C is
> beating me...

Maybe that's a bit optimistic, but it's a start :).

>
>> I decided to use Data.Binary for it
>
> I'm not familiar with that library (i.e. what it does or how you use it).

It's a library to serialize / deserialize haskell values. It uses
ByteStrings, and it's very fast. I suggest to take a look at it (it's
on Hackage).

> I did try that, but it didn't seem to make any difference for me. [Maybe it
> does now because of your other improvements? Which version of GHC and which
> platform are you running on? I'm GHC 6.8.2 on Windows...]

If you recompiled the executable correctly, maybe you were doing
profiling? Profiling slows some simple operations so much, that the
benefits of a low-level optimization like this can be lost.

Salvatore


More information about the Haskell-Cafe mailing list