
Excuse me for moving this discussion over to ghc users. (On Haskell prime) John Meacham wrote:
Although I have not looked into this much, My guess is it is an issue in the simplifier, normally when something is examined with a case statement, the simplification context sets its status to 'NoneOf []', which means we know it is in WHNF, but we don't have any more info about it. I would think that the solution would be to add the same annotation in the simplifier to variables bound by pattern matching on strict data types?
Just a theory. I am not sure how to debug this in ghc without digging into it's code.
Well the latest on this is I've sent Simon some code which illustrates the problem, but it seems not quite as simple as I first speculated, in that a simple function that just overwrites tree elements takes exactly the same time whether I rely on strictness annotations or explicit seqs (something I would not expect if my original speculation was correct). But a more complex function that does insertions into the tree takes about 15% longer using strictness annotations than it does with explicit seqs. The object file seems quite a bit larger too. BTW, I suspect one (perhaps the only) reason for the apparent jump from 5% longer (as stated in my earlier post) to 15% is that I modified the test so less time would be spent on garbage collection, thereby amplifying the apparent difference in speeds. I can post the relevant code to anyone who's interested and thinks they might be able to explain this. I guess the next step would be for someone who understands core to take a look at it. I'm afraid I find core incomprehensible :-( Regards -- Adrian Hey
participants (1)
-
Adrian Hey