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.
--
Ivan Zhakov
------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3171079
To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2016-05-02 17:12:42 CEST