[Haskell-cafe] Abstraction leak

Bulat Ziganshin bulat.ziganshin at gmail.com
Sat Jun 30 14:04:56 EDT 2007


Hello Andrew,

Saturday, June 30, 2007, 11:48:19 AM, you wrote:

>> me too :)  but i never used Haskell for compression itself, only for
>> managing archives. fast compression routines are written in C++
>>   

> What, you're telling me that "fast" software cannot be written in 
> Haskell? :-P

in my program, managing archives isn't time-critical part. compression
requires 90-99% of total execution time

> Well anyway, speed is not my aim. My aim is to play with various 
> textbook algorithms an examine how well they work for various types of
> data. As long as the code isn't *absurdly* slow that'll be just fine.

yes, for studying algorithms Haskell is perfect tool

> (I forget who it was, but a while back somebody pointed out the wisdom
> of using Data.Map. It certainly makes the LZW implementation about 400%
> faster! To say nothing of Huffman...)

it seems that you've done first implementation with lists or immutable
arrays? :)

> BTW, how do the pros do Huffman coding? Presumably not by traversing 
> trees of pointer-linked nodes to process things 1 bit at a time...

encoding is simple - make this traversal one time and store bit
sequence for each symbol. for decoding, you can find length of longest
symbol MaxBits and build table of 2^MaxBits elements which allows to
find next symbol by direct lookup with next input MaxBits. faster
algorithms use two-level lookup, first lookup with 9-10 bits is best
when your encoded symbols are bytes


-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list