Yes, it got faster when compiled with -fno-state-hack.  It also got faster when I added a second (useless) reference to cf (changing the definition of doProbs to cf `seq` replicateM_ m doProb)

Also, when profiling, the number of entries into findChain decreased significantly after adding -fno-state-hack


On Wed, Dec 10, 2014 at 10:49 AM, Simon Peyton Jones <simonpj@microsoft.com> wrote:

Just to check, when you say that “I found it was an instance of…” do you mean “I compiled with –fno-state-hack as the only change, and it got faster again”?   Otherwise how would you know this was the cause?

 

Simon

 

From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of David Spies
Sent: 07 December 2014 19:44
To: ghc-devs@haskell.org
Subject: Re: -O/-O2 causes program to run too slow

 

Ok, so I found that it was an instance of this: https://ghc.haskell.org/trac/ghc/ticket/1168

and I read through this whole thread: https://www.haskell.org/pipermail/glasgow-haskell-users/2008-February/014259.html

I don't understand the state-hack optimization.  It's clearly not safe and I'm not convinced that it actually is an optimization.  In what circumstances does the state-hack identify a single-entry function that can't be identified as single-entry by some other (safe) method?

 

 

On Sun, Dec 7, 2014 at 10:52 AM, David Spies <dnspies@gmail.com> wrote:

I have a program I wrote to submit for the Car Game problem on Kattis: https://open.kattis.com/problems/cargame

but it runs over the 5-second time-limit

 

I downloaded the test data and found that on GHC 7.8.3, if I switch from -O2 to -O0, it runs three times faster (almost certainly fast enough for Kattis to accept).  Can someone tell me what's going on?  Is this a bug?