Ana*_*Ana 3 parallel-processing sbcl common-lisp
在Haskell中,我能够使用以下方法启用列表的并行评估:
map expensiveFunction list `using` parList rdeepseq
Run Code Online (Sandbox Code Playgroud)
仅添加`using` parList rdeepseq能够实现纯并行计算,并且在我的四核处理器上运行速度提高了4倍.
使用SBCL有类似的功能吗?
Common Lisp没有标准的工具来实现这一点,但是有一个库可以完成这个,在大多数CL实现中得到很好的支持:Lparallel
使用lparallel,您可以执行以下操作:
(let ((number-sets '((1 2 3) (4 5 6) (10 11 12 13 14) (100 200 300))))
(lparallel:pmap 'list (lambda (v) (apply #'+ v)) number-sets))
Run Code Online (Sandbox Code Playgroud)
这将并行执行各个求和,否则返回相同的结果,就像使用plain一样map.
| 归档时间: |
|
| 查看次数: |
374 次 |
| 最近记录: |