diff options
author | Michael Meeks <michael.meeks@collabora.com> | 2014-06-20 13:50:32 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-06-24 09:45:22 +0200 |
commit | 7d32ac663e7ac4c6f3f22d003c3f36437be43399 (patch) | |
tree | b34c44ae0b2e3262d0250620dec94a4987248fb6 | |
parent | 22c818bd9fa79a2c008719cc0a858ba2a74b0d82 (diff) |
fdo#76260 - Switch from vector to std::stack.
std::stack uses std::deque which is extremely expensive for this case.
This change saves 43bn of 98bn cycles spent in createFastChildContext.
Change-Id: I63919a9826563171f128e09d7206ac6cfdde336f
(cherry picked from commit 295b97b2a654e00ac5a8e6a3545284fa583fce78)
Signed-off-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | writerfilter/source/ooxml/OOXMLFastContextHandler.cxx | 6 | ||||
-rw-r--r-- | writerfilter/source/ooxml/OOXMLFastContextHandler.hxx | 2 |
2 files changed, 4 insertions, 4 deletions
diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx index 1a436ce1dac9..7fd973c5d5e8 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.cxx @@ -181,7 +181,7 @@ bool OOXMLFastContextHandler::prepareMceContext(Token_t nElement, const uno::Ref m_bDiscardChildren = false; aState.m_bTookChoice = m_bTookChoice; m_bTookChoice = false; - m_aSavedAlternateStates.push(aState); + m_aSavedAlternateStates.push_back(aState); } break; case OOXML_Choice: @@ -268,8 +268,8 @@ throw (uno::RuntimeException, xml::sax::SAXException, std::exception) m_bDiscardChildren = false; else if (Element == (NS_mce | OOXML_AlternateContent)) { - SavedAlternateState aState(m_aSavedAlternateStates.top()); - m_aSavedAlternateStates.pop(); + SavedAlternateState aState(m_aSavedAlternateStates.back()); + m_aSavedAlternateStates.pop_back(); m_bDiscardChildren = aState.m_bDiscardChildren; m_bTookChoice = aState.m_bTookChoice; } diff --git a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx index f8f26384ae15..a7d9bfa982ab 100644 --- a/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx +++ b/writerfilter/source/ooxml/OOXMLFastContextHandler.hxx @@ -300,7 +300,7 @@ private: uno::Reference< uno::XComponentContext > m_xContext; bool m_bDiscardChildren; bool m_bTookChoice; ///< Did we take the Choice or want Fallback instead? - std::stack<SavedAlternateState> m_aSavedAlternateStates; + std::vector<SavedAlternateState> m_aSavedAlternateStates; static sal_uInt32 mnInstanceCount; |