[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

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

From: Ivan Zhakov <ivan_at_visualsvn.com>
Date: Mon, 2 May 2016 16:30:23 +0300

On 2 May 2016 at 13:09, Ivan Zhakov <ivan_at_visualsvn.com> wrote:
> On 1 May 2016 at 21:57, Stefan Küng <tortoisesvn_at_gmail.com> 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: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2016-05-02 17:12:56 CEST

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.