[Haskell-cafe] An interesting toy

Andrew Coppin andrewcoppin at btinternet.com
Sat May 5 17:05:32 EDT 2007


> Try adding strictness annotations to all the components of all your 
> data structures (i.e. put a ! before the type).  Not all of the need 
> it, but I doubt any need to be lazy either.  Probably the reason 
> quant8 seems to be taking so much time is that it is where a lot of 
> stuff finally gets forced.  Certainly, for things that are "primitive" 
> like Colour and Vector you want the components to be strict, in general.
Yes, originally the profile was showing quant8 taking something absurd 
like 80% of the CPU time. When I changed the framebuffer to an IOUArray, 
the time spent in quant8 dropped *drastically*. (Because now the 
framebuffer is strict, and that's forcing the evaluation sooner.)

I could certainly try making vectors, colours and arrays strict and see 
if that does something... (Thinking about it, the colour computation has 
a square root in it, and I bet that doesn't get forced until it hits 
quant8... Square root is an expensive operation on currentl hardware 
isn't it?)
>  Also, you have many many superfluous parentheses and use a different 
> naming convention from representative Haskell code (namely camelCase).
This is a pet hate of mine. NamesLikeThis are fine. names_like_this are 
fine too. But for the love of God, namesLikeThis just looks stupid and 
annoying! So I generally use camel case for stuff which has to start 
uppercase, and underscores for stuff that has to start lowercase. It's a 
system, and it works. Unfortunately it's not the standard convention in 
Haskell. (And I doubt I will convince anybody to change it...)



More information about the Haskell-Cafe mailing list