Odd Performance
Tom Pledger
Tom.Pledger@peace.com
Wed, 23 Oct 2002 10:22:49 +1300
Tim Otten writes:
:
 Can anyone suggest why the tighter algorithm exhibits significantly
 worse performance? Is takeWhile significicantly more expensive than
 take?
No.
 Is the \z lambda expression expensive?
No.
 The intsqrt isn't recalculated each time takeWhile evalutes a
 prime, is it?
Probably. Try replacing this
(\z > z <= (intsqrt x))
with this
(\z > z^2 <= x)
or moving the O(sqrt(n)) step[1] into a let expression
let zmax = intsqrt x in ... (\z > z <= zmax) ...
 Slightly confused,
 Tim Otten

 [1] Note that intsqrt calculates the floor of the square root of x.
 intsqrt x = intsqrt' 1 x
 intsqrt' n x
  (n*n > x) = n1
  otherwise = intsqrt' (n+1) x