我试图在我的库中支持使用Windows本机拼写检查支持。它的一些使用示例可以在这里找到:
https://visualstudiomagazine.com/articles/2013/08/01/using-the-c-spell-checking-api.aspx
由于我自己执行单词标记化,因此我最终为每个单词调用Check
函数并检查是否存在错误。然而,事实证明,使用Windows拼写检查程序时,这个工作流程非常慢,检查〜750个单词需要超过一秒钟,并导致明显和可见的滞后。虽然其他常用的拼写检查库(Hunspell,Aspell)在这种情况下运行得更快。
Profiler向我展示了许多与COM相关的机制和功能,例如FindStdMarshal
执行大部分独立工作。我对COM知之甚少,是否合理。我的代码似乎主要在Check
函数中等待。我可以从主线程中删除此功能,但这当然不能完全解决问题。
Windows拼写检查器是否存在内在缺陷,我必须尽力将单词组合在一起,然后检查它们,或者我做错了什么,并且有更好的工作流程可供使用?
编辑: 这是一个例子: https://gist.github.com/Predelnik/af58986b25eeec03b546a826b17b821c 首先检查循环需要大约。在我的机器上1秒(字数~750) 组合字符串的第二次检查在我的机器上需要0.001(低于精度),基本上返回相同的信息。
使用hunspell / aspell创建可重复的示例可能有点困难,但我相信两种情况都需要接近0秒。