<table><tr><td style="">cullmann added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D17441">View Revision</a></tr></table><br /><div><div><p>Yes, even after this optimization :P 10%</p>

<p>Here is the flat profile, after all this (using the test case from the bug, replacing \t with ; and terminating kwrite afterwards)</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">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</pre></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R39 KTextEditor</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D17441">https://phabricator.kde.org/D17441</a></div></div><br /><div><strong>To: </strong>cullmann, dhaumann, Kate, loh.tar<br /><strong>Cc: </strong>kwrite-devel, kde-frameworks-devel, hase, michaelh, ngraham, bruns, demsking, cullmann, sars, dhaumann<br /></div>