mwolff added a comment.
@jtamate I just checked, the function is called with the same parameters for me locally. What output do you get for this: diff --git a/src/spellcheck/spellcheck.cpp b/src/spellcheck/spellcheck.cpp index 9e04d788..50e92885 100644 --- a/src/spellcheck/spellcheck.cpp +++ b/src/spellcheck/spellcheck.cpp @@ -133,6 +133,7 @@ QList<QPair<KTextEditor::Range, QString> > KateSpellCheckManager::spellCheckWrtH bool singleLine, bool returnSingleRange) { + qDebug() << range << dictionary << singleLine << returnSingleRange; QList<QPair<KTextEditor::Range, QString> > toReturn; if (range.isEmpty()) { return toReturn; @@ -172,6 +173,7 @@ QList<QPair<KTextEditor::Range, QString> > KateSpellCheckManager::spellCheckWrtH } const int start = (line == startLine) ? startColumn : 0; const int end = (line == endLine) ? endColumn : kateTextLine->length(); + qDebug() << line << kateTextLine->attributesList().size() << (end - start); for (int i = start; i < end;) { // WARNING: 'i' has to be incremented manually! int attr = kateTextLine->attribute(i); const KatePrefixStore &prefixStore = highlighting->getCharacterEncodingsPrefixStore(attr); For me this is the interesting bit: 15.097 debug: unknown[unknown:0]: [ (0, 0) -> (0, 358720) ] "" true false 15.097 debug: unknown[unknown:0]: 0 1979 358720 23.013 debug: unknown[unknown:0]: [ (5, 0) -> (5, 162682) ] "" true false 23.013 debug: unknown[unknown:0]: 5 12 162682 So for line 0 I should actually get quite abysmal performance too, worst case 1979 * 358720, but it flies right through here... Now I wonder what kind of CPU you are using? I have a i7-5600U CPU @ 2.60GHz here in my laptop, which has: $ lstopo --of console Machine (11GB) Package L#0 + L3 L#0 (4096KB) L2 L#0 (256KB) + L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 PU L#0 (P#0) PU L#1 (P#1) L2 L#1 (256KB) + L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 PU L#2 (P#2) PU L#3 (P#3) The 1979 entries of attributes (each 12byte large) produce ~24KB of data, which fits nicely within my L1 cache. Maybe I'm just lucky and this is what hides this issue from me? REPOSITORY R39 KTextEditor REVISION DETAIL https://phabricator.kde.org/D11487 To: jtamate, #frameworks, #kate, cullmann Cc: anthonyfieroni, dhaumann, mwolff, cullmann, michaelh, kevinapavew, ngraham, demsking, sars