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]].