I just run kcachegrind over the callgrind result from Ink and from that I would
pick out the new method [CairoFaceInfo characterSet] that Eric added on the
27th of March as the culprit. On my machine this seems to use up 90% of the
execution time of Ink. I don't trust any profiling numbers, still this is an
important hint, where the slowdown might come from.
I don't quite understand how this could happen, as this method gets called only
once per font. The main time there is spend in FcFontMatch, which also gets
called from fontFace, but doesn't result in a problem there. As it turns out
FcFontMatch gets called 10 times (my not so scientific numbers, invent your own
if you prefer) more often from characterSet than it is called from fontFace and
the reason for this simply is that we cache the fontFace but not the
characterSet. The solution should be as simple as to cache the characterSet as
well. Or even better, use a common cache for the resolved pattern.
Eric, what is your thinking on this? By now you are more familiar with the
cairo backend than I am.
On 28.04.2011 21:03, Richard Stonehouse wrote:
This was with the cairo backend.
Rebuilds with the art and xlib backends work fine - run at the
expected speed.
The installed cairo is libcairo.so.2.10800.10 from openSUSE 11.3
package cairo-1.8.10-3.1.i586; gnustep-back 0.18.0 worked OK with
this.
There is another libcairo on the system, installed by vmware in one
of its own directories, but I'm pretty confident that gnustep-back is
linked against the correct libcairo and not the spurious one.
openSUSE 11.4, which I've downloaded but not yet installed, has a new
version of libcairo: /usr/lib/libcairo.so.2.11000.2 in package
libcairo2-1.10.2-6.9.1.i586. I'm planning to install it over the
weekend so will see whether the problem goes away.
Please let me know if there's anything else I should try.
On Thu, Apr 28, 2011 at 11:08:23AM +0100, Fred Kiefr wrote:
I don't know about any specific reason why GNUstep should now be
slower. This seems to be an important issue to investigate. Which
bacend are you using? A wrong backend is the most common reason
for a slowdown. If this isn't the case we need to use tools to
find out where the time gets spend. I will send a mail on this
next week, when I am back home.