续之前的共同学习,IFilter Lib预览版首发,请各位兄弟们支持,今天下午打包完成了稳定版本。
其中包含了所有的源码,测试工程,项目文件为visual studio 2008格式,如果不是vsts版本,可以手动在solution下删除不能识别的测试工程。
改进如下:
1. 在御览版的基础上修复了一些BUG.
2. 完整的支持各种可能的输入
3. 修改了部分逻辑,现在输出十分的稳定 (注:可以把buffer设成最小值试一下:P)
本来打算说一堆废话,现在一看时间已经5点过5分了,所以CUT掉一些说明,下面只拣重点地感悟感叹一下:
实现一个TextReader或者说实现一个Reader模型需要做一个状态转化,而这个状态转化关系到Reader的状态以及内部reader的状态,如果把握不当,问题会变得十分的复杂。
一个Reader内部需要一个Buffer来支持可预读和缓冲从内部reader获取的数据,buffer的个数,大小和读取逻辑直接影响到Reader的性能。
当内部的reader的读出数据大小是不可控时,要留意Buffer的溢出,这个很难用模式去套用,需要实际问题实际分析,把握住各种可能。
你会在FilterReader中看到始终保持一个固定大小的buffer,整个类中没有其他短生命期的临时buffer。这样可以最大的优化读取性能,当在多任务高负荷操作下可以保持较小的内存占用。
测试项目中包含了压力测试,你可以增加test case,验证可靠性。
最后不得不说一下 adobe的filter十分的另类,载入时间也比其他要慢出许多。而且当不经过COM初始化时多线程访问时会出现内部错误,最后unload dll时发生异常。所以用.net自己复杂的COM加载机制代替了原先被我看好的进程内加载。
就此打住,最后放出下载地址:
Eclipse.IndexingService_stableV2.zip
为了方便没有安装2008IDE的朋友,放出二进制版本:
Eclipse.IndexingService_stableV2(binary).zip
有你的支持,才会有它更好的发展,下载的朋友,请把使用情况反馈给我(回复,留言,邮件都可以),先谢过。