5

सबसे पहले मुझे लगता है कि प्रत्येक संग्रह वर्ग को अतिरिक्त par विधि प्राप्त होगी जो संग्रह को एक समान समांतर डेटा संरचना में परिवर्तित कर देगा (जैसे map स्कैला 2.8 में तत्व प्रकार के लिए सबसे अच्छा संग्रह देता है)।स्कैला में समांतर संग्रहों का उपयोग करने में पसंदीदा तरीका क्या है?

अब ऐसा लगता है कि कुछ संग्रह कक्षाएं एक par विधि (ई। जी। सरणी) का समर्थन लेकिन दूसरों toParSeq, toParIterable तरीकों (ई। जी। सूची) है। यह थोड़ा अजीब है, क्योंकि ऐरे का उपयोग नहीं किया जाता है या अक्सर इसकी सिफारिश की जाती है।

इसका कारण क्या है? क्या "सही चीज़" करने वाले सभी संग्रह वर्गों पर par उपलब्ध होना बेहतर नहीं होगा?

यदि मेरे पास डेटा समानांतर में संसाधित किया जा सकता है, तो मुझे किस प्रकार का उपयोग करना चाहिए? scala.collection या सीधे कार्यान्वयन के प्रकार में लक्षण?

या मुझे अब Arrays पसंद करना चाहिए, क्योंकि वे समानांतर होने के लिए सस्ता लगते हैं?

उत्तर

5

सूचियां समानांतर प्रसंस्करण के लिए उपयुक्त नहीं हैं। कारण यह है कि सूची के अंत तक पहुंचने के लिए, आपको प्रत्येक तत्व के माध्यम से चलना होगा। इस प्रकार, आप सूची को एक इटरेटर के रूप में भी देख सकते हैं, और इस प्रकार toParIterable जैसे कुछ सामान्य सामान्य रूप से उपयोग कर सकते हैं।

कोई भी संग्रह जिसमें फास्ट इंडेक्स है समानांतर प्रसंस्करण के लिए एक अच्छा उम्मीदवार है। इसमें LinearSeqOptimized, प्लस पेड़ और हैश टेबल लागू करने वाली कुछ भी शामिल है। Array जितना तेज़ हो सके उतना सूचकांक जितना तेज़ हो सकता है, इसलिए यह काफी स्वाभाविक विकल्प है। आप ArrayBuffer जैसी चीजों का भी उपयोग कर सकते हैं (जिसमें विधि ParArray लौटने की विधि है)।

+0

ऐसा लगता है कि 'SeqLike' पर केवल' .sorted' है, इसलिए आपको केवल 'item.sorted' के बजाय 'items.toSeq.sorted' करना होगा। तो क्यों 'आइटम्स' समानांतर नहीं होने पर लोगों को 'item.toArray.par' करने के बजाय लोगों को कहने के बजाय सभी' .toParIterable' आदि विधियां क्यों हैं? – Steve

+0

@ स्टेव - कुछ मौका है कि 'toParIterable' विधियों को अंतर्निहित डेटा की एक प्रति बनाने की आवश्यकता नहीं है। इसलिए वे धीमे होने के बावजूद, वे कभी-कभी एक अच्छा समझौता कर सकते हैं (उदाहरण के लिए जब सूची का पता लगाना या सूची के प्रत्येक तत्व पर गणना के मुकाबले तेज़ नहीं है)। –