我正在进行一个研究项目,其中包括索引大量文件(240k);它们主要是html、xml、doc、xls、zip、rar、pdf和文本文件,文件大小从几KB到超过100 MB不等。
将所有zip和rar文件解压后,我得到了总计一百万个文件。
我使用Visual Studio 2010、C#和.NET 4.0,支持TPL Dataflow和Async CTP V3。为了从这些文件中提取文本,我使用转换为ikvm的Apache Tika,并使用Lucene.net 2.9.4作为索引器。我想使用新的TPL dataflow库和异步编程。
我有几个问题:
如果我使用TPL,我会获得性能上的好处吗?这主要是一个I/O过程,据我所知,当你大量使用I/O时,TPL并没有太多好处。
生产者/消费者方法是否是处理此类文件处理的最佳方式,还是有其他更好的模型?我考虑创建一个生产者和多个使用blockingcollections的消费者。
TPL数据流库在这种类型的进程中是否有用?似乎TPL数据流最适合在某种消息系统中使用...
在这种情况下,我应该使用异步编程还是保持同步?