1

这很简单:

假设我在文件夹中有许多文件data/要通过一些可执行文件进行处理./proc。最大化效率的最简单方法是什么?我一直在这样做以获得一些效率:

ls --sort=size data/* | tac | parallel ./proc

它根据大小列出数据,然后tac(reverse of cat) 翻转该输出的顺序,以便首先处理最小的文件。这是最有效的解决方案吗?如果没有,如何提高效率(首选简单的解决方案)?

我记得像这样的排序会带来更高的效率,因为更大的工作不会阻塞管道,但除了示例之外,我找不到或记住这背后的任何理论,所以任何参考都将不胜感激!

4

1 回答 1

1

如果您需要运行所有作业并希望优化完成所有作业的时间,您希望它们在同一时间完成。在这种情况下,您应该最后运行小作业。否则,您可能会遇到所有 cpu 都已完成的情况,除了刚刚开始执行最后一项大工作的 cpu。在这里,您将浪费除 CPU 之外的所有 CPU 的 CPU 时间。

这里有 8 个工作:7 个需要 1 秒,一个需要 5 个:

1 2 3 4 55555 6 7 8

首先在双核小作业上:

1368
24755555

先说双核大作业:

555557
123468
于 2014-04-14T20:09:51.417 回答