2010-11-12 11 views
8

में AsParallel() का उपयोग कब करना चाहिए, मैं plinq का उपयोग करके linq में समांतर प्रोग्रामिंग के फायदों का उपयोग करना चाहता हूं, मुझे यकीन नहीं है कि मैं इसका उपयोग करने के लिए पूरी तरह से उपयोग को समझता हूं सभी सीपीयू कोर अधिक कुशलता से एक बड़ी क्वेरी के लिए यह तेज हो सकता है। क्या मैं बस एपीपीरेल कार्यक्षमता का उपयोग करने के लिए लिनक्स कॉल पर AsParallel() को बस कॉल कर सकता हूं और यह हमेशा तेज होगा? या क्या मुझे केवल इसका उपयोग करना चाहिए जब क्वेरी या प्रक्रिया के लिए बहुत सारे डेटा हों?मुझे linq/plinq

उत्तर

7

आप यह नहीं मान सकते कि समानांतर में निष्पादन हमेशा तेज़ होता है। निर्भर करता है। कुछ परिस्थितियों में आप समानांतर में चीजें करके बहु-कोर प्रोसेसर पर बहुत कुछ हासिल करेंगे। अन्य मामलों में, आप चीजों को धीमा कर देंगे, क्योंकि समांतर लूपों में साधारण लूपों पर एक छोटा अति ताप होता है।

उदाहरण के लिए, my other answer देखें जो बताता है कि एम्बेडेड समांतर लूप एक आपदा क्यों हो सकता है।

अब, अगर यह एक अच्छा विचार एक सटीक संदर्भ में समानांतर पाश उपयोग करने के लिए है पता करने के लिए सबसे अच्छा तरीका है दोनों समानांतर और समानांतर नहीं कार्यान्वयन परीक्षण करने के लिए और समय वे ले मापने के लिए है।

3

आगे जवाब देने के लिए जोड़ने के लिए, यह भी अपने डेटा पर निर्भर करता है। एक पल के लिए थोड़ा 'पुराना स्कूल' जाकर आप लूप अनलोलिंग की सड़क पर जा सकते हैं, फोरैच के बजाए और इतने आगे और आगे।

हालांकि, अगर आप वास्तव में सुनिश्चित करने के लिए आप सूक्ष्म अनुकूलन नहीं कर रहे हैं की जरूरत है। आपके डेटा लाने और डेटा के आकार (निश्चित रूप से पेज किए गए डेटा के साथ) के आधार पर आप शायद इसका उपयोग न कर सकते हैं।

यह कहना नहीं है कि आपका linq बहु-कोर जागरूक बनाना अच्छा नहीं है। लेकिन ऐसा कुछ करने की सेटअप लागत से अवगत रहें और इसलिए उस कोड को बनाए रखने और डिबग करने की जटिलताओं के खिलाफ लाभों का वजन कम करने में सक्षम हो।

यदि आपका एल्गोरिदम पहले से ही शीर्ष पायदान है तो प्लिनक एक्सटेंशन को देखते हुए, नक्शा तंत्र को कम करता है या इसी तरह से जाने का तरीका हो सकता है। लेकिन पहले अपने एल्गोरिदम और अपने समग्र लाभ की जांच करें। सही प्रकार के संग्रह (आदि) पर सही तरीके से संचालन हमेशा अपने फायदे लाएगा (और समस्याएं!)।

आप हल करने के लिए कोशिश कर रहे हैं?