किस परिदृश्य में रेंज विभाजन चंक विभाजन से बेहतर विकल्प होगा? (और शिकंजा कविता)Plinq की रेंज विभाजन बनाम खंड विभाजन?
मैं पहले से ही पता है कि
हिस्सा विभाजन: प्रक्रिया के लिए इनपुट से तत्वों का smal हिस्सा हथियाने, वह तो छोटे-छोटे टुकड़ों के साथ शुरू होता है, हिस्सा आकार बढ़ जाता है। (100000 तक रूढ़ अंक पाने के)
IEnumerable<int> numbers = Enumerable.Range (3, 100000-3); var parallelQuery = from n in numbers.AsParallel() where Enumerable.Range (2, (int) Math.Sqrt (n)).All (i => n % i > 0) select n;
सकता खराब करते हैं:
रेंज विभाजन प्रत्येक कार्यकर्ता
इसके अलावा, क्यों इस कोड को तत्वों की संख्या बराबर preallocates श्रेणी विभाजन के साथ?
इस कोड को एक ओर जहां: (प्रथम लाख नंबरों की sqrt की राशि पाने के)
ParallelEnumerable.Range (1, 10000000).Sum (i => Math.Sqrt (i))
बेहतर एक बेहतर विकल्प रेंज विभाजन के साथ उपयोग करने के लिए होगा?
हाय @ हेनक धन्यवाद। तो क्या मेरे लिए यह तय करने के लिए कोई अंगूठा नियम है कि किस का उपयोग करना है? –
जब आप समान वितरण की अपेक्षा करते हैं, तो रेंज विभाजन का उपयोग करें। जब यह अज्ञात होता है (और असमान वितरण का जोखिम होता है), तो टुकड़ों का उपयोग अधिक अनुकूली होगा। –
दृश्यों के पीछे हेनक, वितरण बराबर है या नहीं, तो इससे क्या फर्क पड़ता है? दोनों परिस्थितियों में, एक काम है .... क्या कोई ऐसी चीज है जो _Range_ में किया गया है और _Chunk_ में नहीं है (या कुछ और?)? –