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