From: Lars Gullik Bjønnes Date: Tue, 12 Mar 2002 18:11:49 +0000 (+0000) Subject: optimization X-Git-Tag: 1.6.10~19664 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=97ffd5e9342d60f84f032713029d71b1eb9ac190;p=lyx.git optimization git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3736 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/ChangeLog b/src/ChangeLog index 914f1ed4ca..6d9721a602 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2002-03-12 Lars Gullik Bjønnes + * lyxtextclass.C (operator): add one item cache optimization. + * bufferlist.h: doxy changes * bufferlist.C: ws changes diff --git a/src/lyxtextclass.C b/src/lyxtextclass.C index 6c368bb7b8..7f6a668ff4 100644 --- a/src/lyxtextclass.C +++ b/src/lyxtextclass.C @@ -512,6 +512,13 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const lyxerr << "Operator[] called with empty n" << endl; string const name = (n.empty() ? defaultLayoutName() : n); + + static string lastLayoutName; + static LayoutList::difference_type lastLayoutIndex; + + if (name == lastLayoutName) + return layoutlist[lastLayoutIndex]; + LayoutList::const_iterator cit = find_if(layoutlist.begin(), @@ -527,6 +534,9 @@ LyXLayout const & LyXTextClass::operator[](string const & n) const lyx::Assert(false); } + lastLayoutName = name; + lastLayoutIndex = std::distance(layoutlist.begin(), cit); + return *cit; }