【发布时间】:2023-04-01 01:38:01
【问题描述】:
我必须处理大约 200 万个文本文件并在那里生成三元组。
假设我有一个txt文件xyz.txt(200万输入的文件之一),处理如下:
start(xyz.txt)---->module1(xyz.tpd)------>module2(xyz.adv)-------->module3(xyz.tpl)
建议我一个逻辑或概念,以便我可以在 x64 4GB Windows 系统上以优化的方式更快地处理。
module1(working):它使用调用解析器的 .bat 文件解析 txt 文件,它是一个单独的系统线程,15 秒后它再次开始解析另一个 txt 文件,依此类推....
module2(working):它接受.tpd 文件作为输入并生成.adv 文件。
module3(working):它接受.adv 文件作为输入并生成.tpl(triples)。
我应该从 txt 文件还是在其他点启动线程..? 我担心如果我的 CPU 卡在上下文切换中。
谁能有更好的逻辑,让我试试..!?
【问题讨论】:
-
这 3 个步骤是 CPU 密集型还是您大部分时间都在读取/写入磁盘?
-
主要是读/写操作,但解析和三重生成是 CPU 密集型的。
-
如果你有硬盘,你的 200 万个文件大约需要 11 个小时才能访问(但是你必须打开和关闭的文件数量)如果你每 15 秒做一个,这将需要347 天处理。
-
哇!你提出了一些惊人的事实......所以我现在正在考虑将工作分配给 4 台机器......
标签: java multithreading performance