Ketil Malde <[EMAIL PROTECTED]> writes: > To get memory consumption down, I tried a strict "update" function:
> update k fm = let x = (get hash1 k + get fm k) > in x `seq` addToFM fm k x > which slowed the program down(!), I wonder if this isn't due to never evaluating the values for "foo_2" to "foo_9998" because of laziness? > BTW, I looked at the shootout web pages, but I couldn't find the > specification for any of the benchmarks. What is and isn't allowed? For instance, changing the order of of the updates shaves another 10-20% off the time (because of cache-friendliness, I suppose): - let res = foldr update hash2 (concat $ replicate (read n) keys) + let res = foldr update hash2 (concat $ map (replicate (read n)) keys) -kzm -- If I haven't seen further, it is by standing in the footprints of giants _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe