Re: Spell checking is very slow in commit dialog on Windows 8 and later

Ivan Zhakov <[email protected]>
Newsgroups gmane.comp.version-control.subversion.tortoisesvn.devel
Message-ID <CABw-3YcUt1KUOMbW73HEPTUOzxXLHrnNCn4B8C9-YWc00_CPOA@mail.gmail.com>
On 2 May 2016 at 13:09, Ivan Zhakov <[email protected]> wrote:
> On 1 May 2016 at 21:57, Stefan Küng <[email protected]> wrote:
>> On 01.05.2016 20:21, Ivan Zhakov wrote:
>>> I've noticed that log message spell checking is extremely slow on
>>> Windows 8 and later.
>>>
>>> It seems that root cause is the fact that Microsoft spell checking API
>>> is implemented as out-of-process DCOM server [1]. TortoiseProc uses
>>> STA apartment, so every MS Spell checking API COM call cause message
>>> pump and WM_PAINT for Scinitilla editor is processed.
>>>
>>> I suggest the following changes to improve spell checker performance
>>> in commit dialog:
>>> 1. Perform styling and spell checking in SCN_STYLENEEDED notification
>>> handler instead of SCN_MODIFIED: The code was using SCN_STYLENEEDED
>>> before r26518 [1]. Commit r26518 justification was that
>>> SCN_STYLENEEDED is called for every repaint. But this was happening
>>> because we didn't update end styled position in editor. Calling
>>> SCI_STARTSTYLING(endpos) and SCI_SETSTYLING(0) after processing
>>> SCN_STYLENEEDED fixes this problem and editor stops sending
>>> SCN_STYLENEEDED notification for every repaint. See attached patch.
>>> This fixes unnecessary repaints during styling Scintilla editor seems
>>> to be smart enough to block repaint during SCN_STYLENEEDED processing.
>>
>> Thanks for the patch.
>> Committed in r27294.
>>
> Thanks for review!
>
>>> 2. Introduce small cache for spell checker. For 1000 words or
>>> something. We checking the same text multiple times during typing, so
>>> this gives huge performance improvement. I've patch in progress, but
>>> it's not ready yet.
>>
>> Looks good. Waiting for your patch.
>>
> This need some refactoring, so I'm going to implement it incrementally
> on trunk if you generally support this idea.
>
Implemented in r27302 (depends on 27301, 27300, 27299, 27298)

-- 
Ivan Zhakov

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3171099

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.