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

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

From: Ivan Zhakov <chemodax_at_gmail.com>
Date: Sun, 1 May 2016 21:21:46 +0300

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.

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.

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/hh869748
[2] https://sourceforge.net/p/tortoisesvn/code/26518/

-- 
Ivan Zhakov
------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=3171044
To unsubscribe from this discussion, e-mail: [dev-unsubscribe_at_tortoisesvn.tigris.org].

Received on 2016-05-01 20:25:45 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.