मुझे पता है कि यह सवाल पुराना है, लेकिन चीजें 2009 से विकसित हुई हैं।
अब ध्यान में रखने वाली दो चीजें हैं: कोर की संख्या, और प्रत्येक कोर के भीतर चलने वाले थ्रेड्स की संख्या।
इंटेल प्रोसेसर के साथ, थ्रेड्स की संख्या को हाइपरथ्रेडिंग द्वारा परिभाषित किया गया है जो कि सिर्फ 2 (उपलब्ध होने पर) है। लेकिन हाइपरथ्रेडिंग आपके निष्पादन समय में दो की कटौती करता है, तब भी जब 2 थ्रेड का उपयोग नहीं किया जाता है! (यानी 1 पाइपलाइन दो प्रक्रियाओं के बीच साझा की जाती है - यह अच्छा है जब आपके पास अधिक प्रक्रियाएं हों, अन्यथा बहुत अच्छा नहीं। अधिक कोर बेहतर तरीके से बेहतर हैं!)
अन्य प्रोसेसर पर आपके पास 2, 4 या 8 धागे हो सकते हैं। इसलिए यदि आपके पास 8 कोर हैं, जिनमें से प्रत्येक 8 थ्रेड्स का समर्थन करता है, तो आप संदर्भ स्विचिंग के बिना समानांतर चलने वाली 64 प्रक्रियाएं कर सकते हैं।
"कोई संदर्भ स्विचिंग" स्पष्ट रूप से सच नहीं है यदि आप एक मानक ऑपरेटिंग सिस्टम के साथ चलते हैं जो आपके नियंत्रण से बाहर अन्य सभी प्रकार के लिए संदर्भ स्विचिंग करेगा। लेकिन यह मुख्य विचार है। कुछ OS आपको प्रोसेसर आवंटित करते हैं इसलिए केवल आपके आवेदन में उक्त प्रोसेसर का उपयोग / उपयोग होता है!
मेरे अपने अनुभव से, यदि आपके पास बहुत सारे I / O हैं, तो कई धागे अच्छे हैं। यदि आपके पास बहुत भारी मेमोरी सघन कार्य है (स्रोत 1 पढ़ें, स्रोत 2 पढ़ें, तेज़ संगणना, लिखें) तो अधिक सूत्र होने से मदद नहीं मिलती है। फिर, यह इस बात पर निर्भर करता है कि आप एक साथ कितना डेटा पढ़ते / लिखते हैं (अर्थात यदि आप SSE 4.2 का उपयोग करते हैं और 256 बिट मानों को पढ़ते हैं, जो उनके चरण में सभी थ्रेड्स को रोक देता है ... दूसरे शब्दों में, 1 थ्रेड संभवतः लागू करने के लिए बहुत आसान है और वास्तव में तेज़ नहीं होने पर लगभग उतना ही तेज़। यह आपकी प्रक्रिया और मेमोरी आर्किटेक्चर पर निर्भर करेगा, कुछ उन्नत सर्वर अलग कोर के लिए अलग-अलग मेमोरी रेंज का प्रबंधन करते हैं इसलिए अलग-अलग थ्रेड्स तेजी से मान लेंगे कि आपका डेटा ठीक से दायर किया गया है ... यही वजह है कि, कुछ पर आर्किटेक्चर, 4 प्रक्रियाएं 4 थ्रेड्स के साथ 1 प्रक्रिया से अधिक तेज़ी से चलेंगी।)