[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Sat, 9 Dec 2006 13:59:18 +0000
I've just been looking at liboil, the "Library of optimised inner
loops" with an idea to using it to speed cpu-intensive parts of gnash
up, but my impression is pretty negative.
The documentation is miserable: you cannot figure out how to use any
of their functions just by reading the documentation: many function
parameters are totally undocumented. There is no mention of whether
pointer parameters are used to return a single value or an array, no
adequate description (let alone an actual *definition*, which is what
the doc should be) of what any function does, no mention of what
enumerated or bitfield return values can have or mean. Function naming
is incoherent (add_f64 but sum_f32 - maybe the same function, maybe
Then I looked at the code. Oh dear.
No accelleration for anything but mmx sse and other x86 friends. C
implementations make x86-specific assumptions about pointer values and
data layout. Unaligned data access is encouraged if it is possible,
not edge-trimmed and fixed. The thing coded as "duff's device" is not
duff's device, it is something else that looks similar. The
unaccellerated versions of code are less efficient than what I would
normally code in speed-optimised C, unless you happen to be using a
very intelligent compiler that put parameters in registers...
Nice idea. Maybe it will get better in a few years.
- [Gnash-dev] liboil,
Martin Guy <=