提升pystardict对stardict字典文件的加载速度

stardict是linux下使用最广的字段程序,在广大网友的贡献下,stardict的字典文件可是相当的丰富。pystardict是一个读取startdict字典文件的python库。

前些天在邮件列表看到有人提到用pystardict加载stardict的字典文件速度慢的问题。加载字段文件时需要解析字段的索引文件(.idx)取出所有的单词信息。但python未提供指针,处理速度远比不上c。

我尝试用正则表达式对索引解析部分的代码进行重写,经测试,速度应当能提高3/5的样子。感觉依旧不是太理想,不知道是否还有什么别的办法。

我将改动后的代码生成了一个patch发给pystardict的作者,不知道是否会被采用。

下面是idx解析的关键代码(idx的结构确实是非常的简单):

附件:提高了字典加载速度的pystardict

后记

今天收到原作者的邮件,我提交的patch已经接收了,新的pystardict已经更新过。不过他用的是我早些提交的patch。那个patch里,我unpack的时候没有做跳过\x00的处理,所以要稍微丑点。

One comment

  • 2009年01月13号 - 12:37 pm | Permalink

    似乎没有更加高效的办法。

  • Comments are closed.