It is quite hard for me to tell why this entry is faster than the one one as I 
used the C entry as a starting point which I then refactored multiple times to 
ensure that the solution is closer to what one who right in Haskell.
The only big difference I can see between the two is the different usage of 
list comprehension. The preceding entry was building a list which is then 
refined using the str method to end up being the list of digits. On the other 
hand my version use list continuation to recursively build a list of (digit, 
state) and then you simply have to print (map fst (tail digits)).
I did not use the strictness annotations because they did not improve the 
performance when I tried to add them and I thought it is better to show Haskell 
as one would naturally write it. 

  ----- Original Message ----- 
  From: Alberto G. Corona 
  To: Arnaud Payement ; haskell-cafe@haskell.org 
  Sent: Monday, May 25, 2009 10:54 AM
  Subject: Re: [Haskell-cafe] The Computer Language Benchmarks Game: pidigits


  > :
  > > By the way, I did submit my solution. It improved the score a bit but it
  > > is still very memory hungry.

   a bit?
  Currentlly it is the fastest  in 32 bit . the memory/speed problems happens 
in 64 bit benchmarks. I suppose that the speed is related with the memory leak 
that will be fixed, Dons said.  Event there doubled the performance of the 
previous entry.  


  Just to learn; how this last version is faster than the previous entry?  This 
new version does not use strictness annotations. Is this an example where 
laziness pays (and indeed causes the memory leak in the 64 bit architectures?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to