On 20-mei-2007, at 17:39, Anthony Chaumas-Pellet wrote:

Hello,

I'm currently hacking away a wxhaskell program that uses up 100% CPU
even when it should be idle. So, rather than doing blind guesswork,
I've thought about using profiling to spot the zealous function. I do
not need a very accurate result, though.

ghc with -prof -auto(-all) produces the following error message,
however: "Could not find module `Graphics.UI.WX': Perhaps you haven't
installed the profiling libraries for package wx-0.10.1? Use -v to see
a list of the files searched for."

So, I guess I need to rebuild wx with profiling, but I'm not sure how
to do that exactly; <search engine> and the Wiki did not turn up any
pointers, and there are no ready-made options to build wx with
profiling. It seems Cabal can build a library with profiling
automatically, but I don't think there exists a Cabalized version of
wx yet.

That, and I'm not sure if recompiling libraries to add profiling is a
great idea, as wx itself may depend on other external libraries. So,
is there a better way than profiling in my case, or am I missing
something obvious here?

You are not missing anything obvious. The process is in fact
somewhat tricky. What you have to do is the following:

- compile wxHaskell with profiling (by editing the makefiles to include the
        -prof -auto-all argument to GHC)
- *install* the profiled wxHaskell
- manually move the profiled object libraries to ones including the _p
        string before the .a, e.g. move
        /usr/local/wxhaskell/lib/libwx.a to /usr/local/wxhaskell/lib/libwx_p.a
- manually move the profiled .hi files to .p_hi files, e.g. move
        /usr/local/wxhaskell/lib/imports/Graphics/UI/WX.hi to
        /usr/local/wxhaskell/lib/imports/Graphics/UI/WX.p_hi
- compile wxHaskell without profiling
- install the non-profiled wxHaskell
- enjoy the ability to use wxHaskell in both profiled and unprofiled
        versions

Note: this assumes you are on a Unix-like system. I have no clue how
to do this on Windows, but I'm told it is similar.

Oh, and this is tested and works. The external libraries that wx relies
on are either truly external, as in called through the FFI, or GHC standard
libs that  normally already have a profiling version available.

With regards, Arthur van Leeuwen.

--

/\ / | [EMAIL PROTECTED] | Work like you don't need the money /__\ / | A friend is someone with whom | Love like you have never been hurt / \/__ | you can dare to be yourself | Dance like there's nobody watching



_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to