2009-11-02 17 views
37

PLINQ को .NET 4.0 फ्रेमवर्क में LINQ के विस्तार के रूप में जोड़ा गया था।वास्तव में PLINQ क्या है?

  • यह क्या है?
  • इससे कौन सी समस्याएं हल होती हैं?
  • यह कब उचित है और कब नहीं?

उत्तर

35

यह समांतर LINQ है। (उम्मीद है कि) उन्हें गति देने के लिए, बहु-कोर/बहु-प्रोसेसर सिस्टम पर समानांतर में LINQ क्वेरी चलाने का एक तरीका है।

MSDN Magazine में इस पर एक अच्छा लेख है।

वर्तमान विवरण और योजनाओं के लिए, मैं Parallel Programming with .NET Team Blog पर आलेख पढ़ने की अनुशंसा करता हूं। वे पीआईएलक्यू समेत समांतर एक्सटेंशन को लागू करने वाली टीम हैं।

+2

एमएसडीएन पत्रिका एक लेख से गहरा लिंक नहीं है, लेकिन ब्लॉग अभी भी अच्छा है, इसलिए आपको अभी भी मेरा वोट मिल गया है। –

1
विकिपीडिया के Parallel Extensions से

: (XML को LINQ)

समानांतर LINQ (PLINQ), LINQ के लिए एक समवर्ती क्वेरी निष्पादन इंजन है वस्तुओं (वस्तुओं को LINQ) और XML डेटा पर क्वेरी के निष्पादन parallelizing । PLINQ प्रश्नों के उपयोग से डेटा समांतरता को उजागर करने के लिए है। ऑब्जेक्ट्स पर किसी भी गणना को क्वेरी के रूप में कार्यान्वित किया गया है जिसे PLINQ द्वारा समांतर किया जा सकता है। हालांकि, ऑब्जेक्ट को IParallelEnumerable इंटरफेस को कार्यान्वित करने की आवश्यकता है, जिसे PLINQ द्वारा परिभाषित किया गया है। आंतरिक रूप से यह निष्पादन के लिए टीपीएल का उपयोग करता है।

+0

समानांतर एक्सटेंशन = PLINQ। PLINQ नए समांतर एक्सटेंशन का एक छोटा सा हिस्सा .NET 4 में जोड़ा जा रहा है, लेकिन किसी भी तरह से, सभी पीएफएक्स काम नहीं। –

+4

@ निश्चित रूप से रेड। मैं केवल विकिपीडिया से जुड़ा था, जो "PLINQ" के लिए Google क्वेरी का तीसरा परिणाम है और समांतर LINQ पर एक अनुभाग है। यह एक मामूली सवाल का एक छोटा सा जवाब था। – Greg

10

यह एक लाइब्रेरी है जो आपको सामान्य LINQ क्वेरी लेने, इसे छोटे कार्यों में विभाजित करने और प्रोसेसर कोर का लाभ लेने वाले कई धागे पर प्रत्येक व्यक्तिगत कार्य निष्पादित करने की अनुमति देती है।

3

यह आपको जोड़ने की अनुमति देता है। जितना संभव हो उतने प्रोसेसर का उपयोग करके क्वेरी को निष्पादित करने का प्रयास करने के लिए आपके LINQ के समानांतर। साफ है, लेकिन आपको अभी भी कुछ पता होना चाहिए कि आपका एल्गोरिदम "समानांतर" है या नहीं - यह जादू नहीं है।

यह मूल रूप से थ्रेड पूल को प्रबंधित करने की आवश्यकता को हटा देता है और प्रत्येक धागे से आने वाले परिणामों को सिंक्रनाइज़ करने का प्रबंधन करता है - आम तौर पर समांतर एक्सटेंशन लाइब्रेरी के बिना आपको इसे मैन्युअल रूप से करना होगा।

+0

ध्यान रखें, सब कुछ नहीं है। LINQ के लिए समानांतर, एक अच्छा उदाहरण डेटाटेबल है। – Si8

15

PLINQ समानांतर में LINQ निष्पादित किया गया है, जो कि आपके वर्तमान कंप्यूटर में जितनी अधिक प्रोसेसिंग पावर का उपयोग कर रहा है।

यदि आपके पास दो कोर कोर प्रोसेसर की तरह 2 कोर हैं, तो आप अपने भाषा एकीकृत क्वेरी ऑपरेटर दोनों कोरों का उपयोग करके समानांतर में काम करेंगे।

"केवल" LINQ का उपयोग करके आपको उतना अधिक प्रदर्शन नहीं मिलेगा क्योंकि मानक भाषा एकीकृत क्वेरी ऑपरेटर आपके कोड को समानांतर नहीं करेंगे। इसका मतलब है कि आपका कोड एक सीरियल फैशन में चलाएगा जो आपके सभी उपलब्ध प्रोसेसर कोर का लाभ नहीं उठाएगा।

बहुत सारे PLINQ क्वेरी ऑपरेटर हैं जो अच्छी तरह से ज्ञात पैटर्न का उपयोग करके आपके कोड को निष्पादित करने में सक्षम हैं।

मेरे ब्लॉग पोस्ट पर एक नज़र जिसमें मैं गति दिखाने जब आप AsParallel विस्तार विधि का उपयोग कर समानांतर में एक साधारण LINQ क्वेरी चलाने आपको मिल लें:

Parallel LINQ (PLINQ) with Visual Studio 2010/2012 - Perf testing

आप गहरी जाना चाहते हैं PLINQ का उपयोग कर, मैं सलाह देने के लिए आप को पढ़ने के लिए:

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4

संबंधित मुद्दे