Scala是否在线性时间映射和过滤操作,还是像数组这样的数据结构下有一些并行性?斯卡拉 - 线性时间的地图和过滤操作?
2
A
回答
8
不,完全没有平行性,除非你在做parallel collections这是一个很明确。即使并行,地图和过滤器是线性时间的操作(但许多工人中传播)
15
独立并行的,map
和filter
操作总是要做的至少O(n)
工作,其中n
是集合中元素的个数。 如果集合是例如Array
,List
,ArrayBuffer
,HashMap
或HashSet
,然后filter
和map
做O(n)
工作。 对于像平衡树木这样的特定集合 - 例如mutable.TreeSet
,immutable.TreeMap
,immutable.HashSet
或immutable.Vector
,filter
和map
取O(n logn)
时间,因为更新它们以添加所有元素随着集合增长需要越来越多的工作。
独立的多少工作所需遍历所有元件,许多Scala集合(通常是基于树,地图,尝试和阵列)支持并行filter
和map
,所以工作的每个处理器所做的总量为O(n/p)
,其中p
是您的机器具有的处理器数量。在致电filter
或map
之前,要在集合上使用它们请致电par
。
查看更多about parallel collections here。
相关问题
- 1. 斯卡拉地图+ =操作
- 2. 迭代和过滤斯卡拉地图
- 3. 斯卡拉阿卡流合并过滤器和地图
- 4. 斯卡拉,@ResponseBody和地图
- 5. 过滤从斯卡拉
- 6. 斯卡拉过滤器和打印类
- 7. 斯卡拉 - 地图和平面地图之间的差异
- 8. 斯卡拉位操作
- 9. 斯卡拉工会操作
- 10. 斯卡拉地图的foreach
- 11. 斯卡拉2.8和地图视图
- 12. 斯卡拉集合:是否有安全的地图操作?
- 13. 过滤的斯卡拉选择[设置]
- 14. 斯卡拉:过滤选项的集合
- 15. 斯卡拉:NodeSeq到地图
- 16. 斯卡拉:在地图
- 17. 斯卡拉地图转换
- 18. 斯卡拉地图更新
- 19. 斯卡拉地图伴侣
- 20. 斯卡拉地图验证
- 21. 斯卡拉地图创建
- 22. Json地图在斯卡拉
- 23. 斯卡拉圆形地图
- 24. 斯卡拉地图转型
- 25. 凝结斯卡拉地图
- 26. 斯卡拉地图使用“_”
- 27. 斯卡拉地图排序
- 28. 新手:斯卡拉地图
- 29. 斯卡拉地图和/或groupby函数
- 30. 斯卡拉:扩展地图和定义+
我喜欢你的答案中的所有内容,但我会接受另一个,因为它的简洁与我使用StackOverflow很好地协同工作。不过,我鼓励你。 –
我对第二段中的陈述有所质疑:“完成的工作量是O(n/p)'。”这是不正确的。工作总量仍然是“O(n)”。然而,完成的时间是'O(n/p)'。当然,它确实是'Ω(n/p)',因为同时执行的计算的概念独立性实际上是通过使用共享高速缓存和RAM来相互干扰的。 –
我编辑了“全部工作”部分,你说得对。当然,关于干扰,这是一个理论模型,不能反映某些特定硬件的细节。 – axel22