[HOpenGL] GlxGears
Simon Marlow
simonmar at microsoft.com
Tue Mar 16 09:16:57 EST 2004
> Shawn P. Garbett wrote:
> > [...]
> > Haskell Version on my laptop, FPS = 103
> > C Version on my laptop, FPS = 192
> > [...]
>
> I just gave your example a quick try on my PC, the results do
> not differ
> that much for my setup (SuSE x86 Linux 8.2, 3GHz P4, NVIDIA FX 5900):
>
> Haskell version: 6000 FPS
> C version: 7165 FPS
>
> Curiously, using -O for the Haskell compilation doesn't make
> any difference.
> I'll take a closer look with GHC's profiler and the ltrace
> tool when I get
> some time.
>
> Thanks for the conversion BTW, I'd like to place this example
> into GLUT'S
> "Misc" example directory, with a BSD-like license. Would that be OK?
There's a performance problem we discovered recently in GHC where code
like this:
case _ccall_ f ... of
(# s, r #) -> ...
would result in an out-of-line call to f instead of the expected inline
call. This might affect you. Also, make sure that HOpenGL doesn't use
the FFI facility to specify include files in a foreign import
declaration: this prevents cross-module inlining of the call in GHC.
Otherwise, the usual tricks apply: looks like the code has lots of
Floats sloshing around, so try to get them unboxed as much as possible.
If you store Floats/Doubles in a data structure, try using ! {-# UNPACK
#-}.
Cheers,
Simon
More information about the HOpenGL
mailing list