经常迭代或过程密集是否更有效?

时间:2014-10-24 11:13:02

标签: performance batch-file iteration

我有很多文本处理脚本可以应用于很多文本文件。我正在编写一个批处理脚本(在Win 7上)来启动它们并遍历包含文本文件的目录和子目录。实际上,我想知道是否有更好的迭代方法或在一次迭代中执行更多关于效率的更多进程:

变体A

for x in y
process 1 on x
process 2 on x 
process 3 on x

变体B

for x in y
process 1 on x

for x in y
process 2 on x

for x in y
process 3 on x

提前谢谢!

2 个答案:

答案 0 :(得分:1)

这完全取决于循环的大小,进程的数量和这些进程所需的资源(以及您使用的编程语言;)) 解决这个问题的最佳方法是创建一个测试脚本,同时给出两种方法,看看whitch是最快的。

如果差异很小,我会选择最干净的解决方案,只使用1个循环执行多个进程...因为它更容易阅读。

答案 1 :(得分:1)

这取决于几个因素,因此没有答案是肯定的。但是,我认为您采取的方法主要取决于您正在进行的处理。

让我们说process1改变其输入,process2process3也是如此。如果可能,您可以编写处理,以便他们可以stdin处理,处理它,并向stdout提供输出 - 这样您可以这样做:

for each x in y do
  process1 x | process2 | process3 > x_new
  overwrite x with x_new

每个文件只能被读入一次,通过所有进程传送到"做他们的事情",并在最后被替换。

但正如我所说,这完全取决于处理实际上做了什么。