From: Joaquín Cuenca Abela (cuenca@pacaterie.u-psud.fr)
Date: Thu Jul 18 2002 - 16:26:01 EDT
just fwiw. Loading a 205 pages document takes ~2 minutes. That sucks.
Here's what gprof has to say:
% cumulative self self total
time seconds seconds calls ms/call ms/call name
12.28 5.70 5.70
UT_StringPtrMap::find_slot(UT_String const &,
UT_StringPtrMap::SM_search_type, unsigned int &, bool &, unsigned int &,
void const *, bool *, void *, unsigned int) const
10.68 10.66 4.96
UT_String::UT_String(char const *, unsigned int)
6.98 13.90 3.24 hashcode(UT_String
const &)
3.51 15.53 1.63
UT_StringPtrMap::pick(char const *) const
3.25 17.04 1.51
UT_Stringbuf::UT_Stringbuf(char const *, unsigned int)
3.12 18.49 1.45 2675812 0.00 0.00
fp_Run::updateHighlightColor(void)
3.06 19.91 1.42
UT_String::c_str(void) const
2.74 21.18 1.27
UT_StringPtrMap::pick(UT_String const &) const
2.43 22.31 1.13
operator==(UT_String const &, UT_String const &)
2.37 23.41 1.10 6441199 0.00 0.00
PP_evalProperty(char const *, PP_AttrProp const *, PP_AttrProp const *,
PP_AttrProp const *, PD_Document *, bool)
2.37 24.51 1.10
UT_String::~UT_String(void)
1.96 25.42 0.91 447093 0.00 0.00
UT_contextGlyph::renderString(unsigned int const *, unsigned int *,
unsigned int, unsigned int const *, unsigned int const *) const
1.81 26.26 0.84 s_compare(void
const *, void const *)
1.66 27.03 0.77 2909483 0.00 0.00
pt_PieceTable::getSpanAttrProp(void const *, unsigned int, bool,
PP_AttrProp const **) c
As you see, the hash table takes all the time. I'm not suspecting the
hash table implementation itself -- but I guess that a COW and a "little
strings" optimizations to UT_Stringbuf (removing the mutable [] operator
of UT_String before) would improve quite a bit these figures.
It's just that we're calling too much these functions. I've seen that
when I was debugging the fonts code, the layout is trying to access
several times the same font (I don't remember how many times per
character written, but it was > 1).
If I discover some stupid bottleneck I will try to fix it and email some
patches.
Cheers,
-- Joaquín Cuenca Abela cuenca@pacaterie.u-psud.fr
This archive was generated by hypermail 2.1.4 : Thu Jul 18 2002 - 16:30:57 EDT