performance issues

From: Joaquín Cuenca Abela (cuenca@pacaterie.u-psud.fr)
Date: Thu Jul 18 2002 - 16:26:01 EDT

  • Next message: Joaquín Cuenca Abela: "Re: libgsf"

    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