
Ketil Malde
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