利用 Actor 处理任务及优化实践
1. 运行程序及初始结果
可以使用不同长度的任务列表和不同数量的工作 Actor 来运行程序。在一个八核心的 Linux 系统上,当任务长度为 200,000 时,得到以下结果:
| 工作 Actor 数量 | 执行时间 |
| ---- | ---- |
| 1 个 | 3.5 秒 |
| 2 个 | 1.5 秒 |
| 3 个 | 1.1 秒 |
| 4 个 | 0.8 秒 |
| 6 个 | 0.8 秒 |
| 8 个 | 0.8 秒 |
| 16 个 | 0.8 秒 |
这些数据虽然不是非常精确,但表明使用与可用核心数对应的线程数量并没有带来性能提升。程序显示的结果如下(仅显示前 40 个结果):
Input: [0, 11, 28, 13, 20, 5, 15, 8, 24, 19, 12, 7, 11, 4, 18, 20, 26, 21, 15, 21, 29, 16, 15, 8, 22, 11, 26, 1, 22, 13, 25, 3, 13, 24, 29, 10, 7, 26, 24, 1, NIL] Time: 797 Result: [1, 8, 28657, 34, 196418, 34, 987, 987, 1597, 832040, 28657, 17711, 987, 377, 1, 17711, 196418, 377, 10946, 4181, 5, 6765, 144, 21, 75025, 233, 832040, 89, 144, 75025, 514229, 21, 377, 1, 10946, 3,