cullmann added a comment.
Yes, even after this optimization :P 10% Here is the flat profile, after all this (using the test case from the bug, replacing \t with ; and terminating kwrite afterwards) 86.90% 2.05% kwrite libQt5Core.so.5.11.2 [.] QMetaObject::activate 86.50% 0.00% kwrite libKF5TextEditor.so.5.53.0 [.] KateSearchBar::qt_static_metacall 86.48% 0.00% kwrite libKF5TextEditor.so.5.53.0 [.] KateSearchBar::replaceAll 86.48% 0.00% kwrite libQt5Widgets.so.5.11.2 [.] QAbstractButton::clicked 86.48% 0.00% kwrite [unknown] [.] 0x00007ff1fbcecb00 86.08% 0.13% kwrite libKF5TextEditor.so.5.53.0 [.] KateSearchBar::findAll 72.36% 0.17% kwrite libKF5TextEditor.so.5.53.0 [.] KateMatch::replace 58.83% 0.08% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::replaceText 30.05% 0.10% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::removeText 29.33% 0.18% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::editRemoveText 28.24% 0.09% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::insertText 27.38% 0.14% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::editInsertText 14.03% 0.15% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::removeText 13.01% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::insertText 10.65% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::textRemoved 10.56% 0.76% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextCursor::setPosition 10.24% 0.01% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::textInserted 10.10% 0.02% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::QSlotObject<void (KateVi::NormalViMode::*)(KTextEditor::Document*, KTextEditor::Range), QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void>::impl 10.09% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::FunctionPointer<void (KateVi::NormalViMode::*)(KTextEditor::Document*, KTextEditor::Range)>::call<QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void> 10.05% 0.04% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void, void (KateVi::NormalViMode::*)(KTextEditor::Document*, KTextEditor::Range)>::call 9.04% 1.36% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::removeText 9.04% 0.11% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextCursor::setPosition 8.42% 1.23% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::insertText 8.39% 0.02% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::QSlotObject<void (KTextEditor::DocumentPrivate::*)(KTextEditor::Document*, KTextEditor::Range const&), QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void>::impl 8.38% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::FunctionPointer<void (KTextEditor::DocumentPrivate::*)(KTextEditor::Document*, KTextEditor::Range const&)>::call<QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void> 8.34% 0.06% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1>, QtPrivate::List<KTextEditor::Document*, KTextEditor::Range const&>, void, void (KTextEditor::DocumentPrivate::*)(KTextEditor::Document*, KTextEditor::Range const&)>::call 8.13% 0.25% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::saveEditingPositions 7.63% 0.54% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::Marks::setMark 6.48% 0.40% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextRange::fixLookup 6.45% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] KateMatch::searchText 5.84% 0.19% kwrite libKF5TextEditor.so.5.53.0 [.] KateBuffer::plainLine 5.48% 0.04% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::newMovingRange 5.48% 0.06% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::searchText 5.47% 0.20% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::line 5.36% 0.14% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextRange::TextRange 4.99% 0.11% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextRange::checkValidity 4.92% 0.13% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::NormalViMode::textInserted 4.85% 0.12% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::NormalViMode::textRemoved 4.69% 1.65% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::blockForLine 4.04% 1.08% kwrite libKF5TextEditor.so.5.53.0 [.] QBasicAtomicInteger<int>::load 3.89% 0.04% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::textInserted 3.84% 1.52% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::RefCount::isShared 3.82% 0.05% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::textRemoved 3.71% 0.13% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::insertCursor 3.66% 0.01% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextRange::~TextRange 3.59% 0.05% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextRange::~TextRange 3.56% 0.18% kwrite libKF5TextEditor.so.5.53.0 [.] QSet<Kate::TextCursor*>::insert 3.46% 0.09% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::Marks::setLastChange 3.44% 0.92% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::RefCount::deref 3.35% 2.62% kwrite libKF5TextEditor.so.5.53.0 [.] QAtomicOps<int>::load<int> 3.32% 0.09% kwrite libKF5TextEditor.so.5.53.0 [.] KateMatch::buildReplacement 3.15% 0.28% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextCursor*, QHashDummyValue>::insert 3.15% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::removeCursor 3.06% 0.06% kwrite libKF5TextEditor.so.5.53.0 [.] QSet<Kate::TextCursor*>::remove 3.02% 0.19% kwrite libKF5TextEditor.so.5.53.0 [.] KatePlainTextSearch::search 2.99% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] KateLayoutCache::qt_static_metacall 2.93% 0.49% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextCursor*, QHashDummyValue>::remove 2.87% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::Marks::setFinishEditYanked 2.85% 0.29% kwrite libKF5TextEditor.so.5.53.0 [.] QSet<Kate::TextCursor*>::const_iterator::operator++ 2.84% 0.10% kwrite libKF5TextEditor.so.5.53.0 [.] KateLineLayoutMap::slotEditDone 2.82% 0.53% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextCursor*, QHashDummyValue>::findNode 2.68% 0.13% kwrite libKF5TextEditor.so.5.53.0 [.] KateUndoManager::addUndoItem 2.63% 0.08% kwrite libKF5TextEditor.so.5.53.0 [.] KateUndoManager::slotTextRemoved 2.56% 0.14% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::updateRange 2.47% 0.33% kwrite libKF5TextEditor.so.5.53.0 [.] QBasicAtomicInteger<int>::deref 2.47% 0.48% kwrite libKF5TextEditor.so.5.53.0 [.] QString::~QString 2.39% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::removeRange 2.28% 2.19% kwrite libQt5Core.so.5.11.2 [.] QHashData::nextNode 2.26% 0.23% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::text 2.26% 0.20% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<Kate::TextBlock*>::operator[] 2.21% 0.04% kwrite libKF5TextEditor.so.5.53.0 [.] KateUndoManager::slotTextInserted 2.19% 0.26% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::line 2.18% 0.09% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentCursor::atEndOfDocument 2.07% 0.19% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<Kate::TextBlock*>::data 2.05% 0.31% kwrite libKF5TextEditor.so.5.53.0 [.] QAtomicOps<int>::deref<int> 2.01% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::documentEnd 1.98% 1.89% kwrite libKF5TextEditor.so.5.53.0 [.] QArrayData::data 1.97% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] QStack<QSharedPointer<KTextEditor::MovingCursor> >::pop 1.96% 1.80% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextCursor*, QHashDummyValue>::findNode 1.94% 0.18% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextCursor::TextCursor 1.86% 0.11% kwrite libKF5TextEditor.so.5.53.0 [.] QSet<Kate::TextRange*>::insert 1.86% 1.78% kwrite kwrite [.] std::__atomic_base<int>::operator-- 1.82% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::lineLength 1.80% 0.23% kwrite libKF5TextEditor.so.5.53.0 [.] KateRegExpSearch::buildReplacement 1.71% 0.17% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextRange*, QHashDummyValue>::insert 1.70% 0.13% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBuffer::blockForIndex 1.65% 0.10% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::line 1.62% 0.23% kwrite libKF5TextEditor.so.5.53.0 [.] QBasicAtomicInteger<int>::ref 1.58% 0.02% kwrite libKF5TextEditor.so.5.53.0 [.] KateLayoutCache::removeText 1.57% 0.05% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::DocumentPrivate::kateTextLine 1.54% 0.02% kwrite libKF5TextEditor.so.5.53.0 [.] KateVi::Marks::setStartEditYanked 1.52% 1.41% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextBlock::startLine 1.48% 1.46% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextCursor::lineInBlock 1.43% 0.28% kwrite libKF5TextEditor.so.5.53.0 [.] KateUndoGroup::addItem 1.43% 0.17% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<Kate::TextBlock*>::detach 1.38% 0.20% kwrite libKF5TextEditor.so.5.53.0 [.] QAtomicOps<int>::ref<int> 1.37% 0.02% kwrite libKF5TextEditor.so.5.53.0 [.] KateLayoutCache::insertText 1.32% 0.30% kwrite libKF5TextEditor.so.5.53.0 [.] QTypedArrayData<Kate::TextBlock*>::begin 1.32% 0.10% kwrite libKF5TextEditor.so.5.53.0 [.] KateRegExpSearch::escapePlaintext 1.31% 0.28% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextRange*, QHashDummyValue>::findNode 1.31% 0.05% kwrite libKF5TextEditor.so.5.53.0 [.] KateCompletionWidget::qt_static_metacall 1.30% 1.21% kwrite libc-2.28.so [.] malloc 1.29% 1.14% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::Cursor::line 1.26% 1.21% kwrite kwrite [.] std::__atomic_base<int>::operator++ 1.24% 0.29% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<Kate::TextBlock*>::isDetached 1.23% 0.51% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<Kate::TextBlock*>::operator[] 1.23% 0.12% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::SwapFile::qt_static_metacall 1.22% 0.34% kwrite libKF5TextEditor.so.5.53.0 [.] QSharedPointer<Kate::TextLineData>::QSharedPointer 1.21% 0.00% kwrite [unknown] [.] 0x00005648626a95b0 1.19% 0.04% kwrite libKF5TextEditor.so.5.53.0 [.] QSet<Kate::TextRange*>::remove 1.14% 0.11% kwrite libKF5TextEditor.so.5.53.0 [.] QSharedPointer<Kate::TextLineData>::~QSharedPointer 1.13% 0.15% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextRange*, QHashDummyValue>::remove 1.11% 0.03% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<QSharedPointer<KTextEditor::MovingCursor> >::resize 1.09% 0.29% kwrite libKF5TextEditor.so.5.53.0 [.] QVector<QSharedPointer<KTextEditor::MovingCursor> >::reallocData 1.08% 0.07% kwrite libKF5TextEditor.so.5.53.0 [.] KTextEditor::MovingRange::setRange 1.08% 0.23% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextRange*, int>::findNode 1.07% 0.23% kwrite libKF5TextEditor.so.5.53.0 [.] QtPrivate::RefCount::ref 1.05% 0.15% kwrite libKF5TextEditor.so.5.53.0 [.] QSharedPointer<Kate::TextLineData>::deref 1.04% 0.59% kwrite libKF5TextEditor.so.5.53.0 [.] Kate::TextCursor::line 1.03% 0.32% kwrite libKF5TextEditor.so.5.53.0 [.] QTypedArrayData<Kate::TextBlock*>::data 1.03% 0.06% kwrite libKF5TextEditor.so.5.53.0 [.] QStringList::~QStringList 1.00% 0.91% kwrite libKF5TextEditor.so.5.53.0 [.] QHash<Kate::TextRange*, QHashDummyValue>::findNode REPOSITORY R39 KTextEditor REVISION DETAIL https://phabricator.kde.org/D17441 To: cullmann, dhaumann, #kate, loh.tar Cc: kwrite-devel, kde-frameworks-devel, hase, michaelh, ngraham, bruns, demsking, cullmann, sars, dhaumann