TA的每日心情 | 衰 2019-9-23 23:38 |
---|
签到天数: 8 天 [LV.3]偶尔看看II
禁止发言
- 积分
- 47766
|
象欧路这种软件,即使同时打开几百个甚至上千个MDX,只要这个单词在每部词典中需要渲染的内容少(比如生僻词)又没有什么复杂的JS,最后渲染出来的时间都只是区区几秒钟。看起来从每个MDX中找到要检索的单词加起来的总时间(我只是谈检索找到的总时间而不是渲染的总时间)几乎是可以忽略不计的。
我感到这个速度非常神奇!
MDX具有极高的压缩率,解压出来的原始文本HTML文件暴涨5倍以上体积是很常见的。几百个MDX原始文件大小加起来可能有十几或者几十GB,如果要全部解压可能是几十GB甚至上百GB。显然词典软件不可能将所有MDX解压到硬盘或内存中。看起来MDX全部解压出来之后再读取有效内容并检索并非是这些词典软件的做法。然而令人疑惑的是,即使它们可以不用解压而可以直接读取MDX(或者不事先全部解压而是每次只读一小部分就立即解压一小部分),这也是惊人的速度!十几GB或者几十GB的MDX从硬盘中读取到内存的总时间绝对不可能是区区几秒的瞬间过程。如果用windows资源管理器查看词典软件内存占用,它们不过占用区区几MB或者十几MB,几十MB的内存,看起来它们根本不会将这些MDX从硬盘全部(不管是全部一次还是分多次)读取到内存中处理?
MDX无需读取全部内容就能从其中特定的位置检索出某个特定单词?? 看起来这只有事先对MDX进行索引才能做到!
GOLDENDICT每次加入新MDX的确有一个预处理(索引?)过程,但是我不能确定这个过程就是完全针对我们正在探讨的单词在MDX中检索的这个问题的?
进一步,欧路这种软件看起来根本就不会去做GOLDENDICT这个索引,尽管它也会有个预处理,但这个预处理时间和GOLDENDICT比小好几个数量级。通过查看欧路预处理生成的文件可以发现主要是为了避免不同词库的冲突而对CSS的处理,与其说欧路是在对MDX预处理,不如说是在对(MDD中的)CSS预处理。这从它的处理时间就可以看出来,显然远比全部读出所有MDX(甚至再加上解压)的总时间小几个数量级:即使安装了几百个MDX,清缓存将生成的预处理文件全部删除,下次再重新启动欧路,也不过是十秒上下的时间就启动和处理完毕在待命了。
再者,做索引的前提条件是不是MDX中的单词要按字母顺序排列呢??然而MDX规范中应该没有这个要求吧?即使不按字母顺序排列的MDX应该一样可以正常和不减速地使用呢?
有高人能稍微解释一下吗?
|
|