禁止使用Lucene
。我有一台装有8核和20 GB RAM的计算机。我有100万个NFS文件。我必须搜索一个搜索词“ Hello World”。我的问题是:
最有效的方法应该是什么?
要产生多少个线程?
如果我可以使用多台计算机,答案将以什么方式改变?我将使用Java进行此操作。 假设我使用ThreadPoolExecutor。它的corePoolSize应该是什么? maximumPoolSize?我想向其提交Callable个任务,该任务将读取文件并使用正则表达式搜索所需的搜索词。
答案 0 :(得分:1)
Venkat Subramaniam的《 JVM上的编程并发性》 一书中的一句话,关于如何计算线程池的最佳大小:
Number of threads = Number of Available Cores / (1 - Blocking Coefficient)
阻塞系数在0到1之间。
阻塞系数是单个线程被阻塞(即等待磁盘I / O之类的时间)的时间百分比。因此,例如,如果该百分比为30,那么您的阻塞系数将为0.3