我有一个包含几行的文本文件,我正在这个文件中寻找一个字符串。我需要将以下命令行参数传递给程序:
- 文件路径
- 我要查找的字符串
- 允许程序“分叉”以完成此任务的最大进程数。
这样的程序应该如何构建?
我有一个包含几行的文本文件,我正在这个文件中寻找一个字符串。我需要将以下命令行参数传递给程序:
- 文件路径
- 我要查找的字符串
- 允许程序“分叉”以完成此任务的最大进程数。
这样的程序应该如何构建?
几个想法。
您可以通过内存映射文件来解决这两个问题(当然,您仍然冒着增加缓存未命中率的风险)......
你有多需要这个?它存在过早优化的真正风险。我建议不要在没有迫切需要的情况下接触这个问题。真的。
考虑一下为什么你认为你需要并行化它,以及你是否会看到任何实际的性能优势。您可能会受到磁盘访问时间的限制,并且分叉会产生开销。您最好的选择可能是进行标准的单线程搜索(可能使用正则表达式)。
假设你真的认为这是必要的(或者这是家庭作业?),一个(相对高级的)方法可能是:
startIndex = indexOfProcess * fileSize / numberOfProcesses endIndex = (indexOfProcess + 1) * fileSize / numberOfProcesses您必须考虑这样一个事实,即要搜索的字符串可以通过添加一些重叠来跨越两个或多个进程的切片(这将是字符串大小的函数)。
要么这是作业,要么这是无用的。瓶颈在于磁盘带宽,而不是 CPU 能力。使用同时访问只会减慢您的速度。