स्ट्रीम एपीआई को एक तरह से गणना लिखने में आसान बनाने के लिए डिज़ाइन किया गया था जो कि उन्हें कैसे निष्पादित किया जाएगा, यह अनुक्रमिक और समानांतर आसान के बीच स्विच करने से दूर हो गया था।
हालांकि, सिर्फ इसलिए कि यह आसान है, इसका मतलब यह नहीं है कि यह हमेशा एक अच्छा विचार है, और वास्तव में, यह एक बुरा विचार है .parallel()
कि आप सभी जगह सिर्फ इसलिए छोड़ सकते हैं क्योंकि आप कर सकते हैं।
सबसे पहले, ध्यान दें कि अधिक कोर उपलब्ध होने पर समानता तेजी से निष्पादन की संभावना के अलावा कोई लाभ नहीं देती है। एक समानांतर निष्पादन में हमेशा अनुक्रमिक से अधिक कार्य शामिल होगा, क्योंकि समस्या को हल करने के अलावा, इसे उप-कार्यों के प्रेषण और समन्वय भी करना होगा। आशा है कि आप कई प्रोसेसरों में काम को तोड़कर उत्तर को तेज़ी से प्राप्त कर पाएंगे; क्या यह वास्तव में होता है, बहुत सी चीजों पर निर्भर करता है, जिसमें आपके डेटा सेट का आकार, प्रत्येक तत्व पर आप कितनी गणना कर रहे हैं, गणना की प्रकृति (विशेष रूप से, एक तत्व का प्रसंस्करण दूसरों के प्रसंस्करण के साथ बातचीत करता है?) उपलब्ध प्रोसेसर की संख्या, और उन प्रोसेसर के लिए प्रतिस्पर्धा करने वाले अन्य कार्यों की संख्या।
इसके अलावा, ध्यान दें कि समानता भी अक्सर संगणनात्मक कार्यान्वयन द्वारा छिपी हुई संगणना में nondeterminism को उजागर करती है; कभी-कभी यह कोई मायने नहीं रखता है, या इसमें शामिल ऑपरेशनों को बाध्य करके इसे कम किया जा सकता है (यानी, कमी ऑपरेटरों को निष्क्रिय और साहचर्य होना चाहिए)।
वास्तव में, कभी-कभी समानता आपके कंपटीशन को तेज कर देगी, कभी-कभी यह नहीं होगा, और कभी-कभी यह इसे धीमा भी कर देगा। अनुक्रमिक निष्पादन का उपयोग करके पहले विकसित करना सबसे अच्छा है और फिर समानता कहां लागू होती है
(ए) आप जानते हैं कि वास्तव में प्रदर्शन को बढ़ाने के लिए लाभ है और
(बी) कि यह वास्तव में बढ़ा हुआ प्रदर्शन प्रदान करेगा।
(ए) एक व्यावसायिक समस्या है, न कि तकनीकी। यदि आप एक प्रदर्शन विशेषज्ञ हैं, तो आप आमतौर पर कोड को देखने और निर्धारित करने में सक्षम होंगे (बी), लेकिन स्मार्ट पथ को मापना है। (और, जब तक आप (ए) के बारे में आश्वस्त न हों, परेशान न हों; यदि कोड पर्याप्त तेज़ है, तो अपने मस्तिष्क चक्रों को कहीं और लगाने के लिए बेहतर है)।
समानता के लिए सबसे सरल प्रदर्शन मॉडल "एनक्यू" मॉडल है, जहां एन तत्वों की संख्या है, और क्यू प्रत्येक तत्व की गणना है। सामान्य तौर पर, प्रदर्शन लाभ प्राप्त करने से पहले आपको उत्पाद NQ को कुछ सीमा से अधिक करने की आवश्यकता होती है। कम क्यू समस्या के लिए जैसे "1 से एन तक संख्याएं जोड़ें", आप आमतौर पर एन = 1000 और एन = 10000 के बीच एक विचलन देखेंगे। उच्च-क्यू समस्याओं के साथ, आप निचले थ्रेसहोल्ड पर ब्रेकेवेंस देखेंगे।
लेकिन वास्तविकता काफी जटिल है। इसलिए जब तक आप अनुभूति प्राप्त नहीं करते हैं, तब तक पहले यह पहचान लें कि अनुक्रमिक प्रसंस्करण वास्तव में आपको कुछ लागत दे रहा है, और फिर मापें कि क्या समानतावाद मदद करेगा।