Elixir并发编程与状态管理实践
1. 多进程计算性能差异
在进行多进程计算时,代码在不同调度设置下的执行速度有明显差异。 multiple_calculations.ex 模块中的代码会生成四个进程来执行一些耗时任务。当使用默认调度设置(每个物理CPU一个调度器)和禁用多进程时,执行速度不同。
启用每个CPU一个调度器时,任务完成得更快,因为虚拟机可以将每个任务分配给所有可用的处理器。以下是不同计算范围在4核和1核情况下的执行时间对比:
| 计算范围 | 4核执行时间 | 1核执行时间 |
| — | — | — |
| 1..10000000 | 4758 ms | 8453 ms |
| 1..20000000 | 8286 ms | 14944 ms |
| 1..30000000 | 10848 ms | 19114 ms |
| 1..40000000 | 11347 ms | 21338 ms |
| 总时间 | 35239 ms | 63849 ms |
虽然虚拟机负责使用所有可用处理器进行调度,但我们仍需关注代码性能。
2. 使用任务进行并发计算
我们将构建一个简单的地理位置应用程序,该应用程序接收IP地址列表并输出IP注册的国家。使用Elixir的 Task 模块为列表中的每个IP地址生成一个进程,位置确定将并发执行。
2.1 准备工作
- 生成Mix应用 :
超级会员免费看
订阅专栏 解锁全文
38

被折叠的 条评论
为什么被折叠?



