/ / रूबी थ्रेडिंग मॉडल (रूबी बनाम जेआरबीई) के आपके व्यावहारिक प्रभाव के साथ एक व्यावहारिक प्रभाव क्या होगा? - रूबी, मल्टीथ्रेडिंग, जर्बी

रुबी थ्रेडिंग मॉडल (रूबी बनाम जेआरबीई) के आपके व्यावहारिक प्रभाव के साथ एक व्यावहारिक प्रभाव क्या होगा? - रूबी, मल्टीथ्रेडिंग, जर्बी

मैं एमआरआई रूबी 1.8 और जेआरबी के बीच विभिन्न थ्रेडिंग मॉडल के व्यावहारिक प्रभाव को समझने की कोशिश कर रहा हूं।

डेवलपर के रूप में मेरे लिए यह अंतर क्या मायने रखता है?

और, क्या एमआरआई रूबी 1.8 में कोड का कोई व्यावहारिक उदाहरण है जो विभिन्न थ्रेडिंग मॉडल के कारण जेआरबीई पर खराब प्रदर्शन विशेषताओं का होगा?

उत्तर:

उत्तर № 1 के लिए 11

राज्य

  • रूबी 1.8 में हरे धागे हैं, ये तेजी से बनाने / हटाने (वस्तुओं के रूप में) हैं, लेकिन वास्तव में समानांतर में निष्पादित नहीं होते हैं और ऑपरेटिंग सिस्टम द्वारा भी निर्धारित नहीं किए जाते हैं लेकिन वर्चुअल मशीन द्वारा
  • रूबी 1।9 में वास्तविक धागे हैं, ये ओएस कॉल के कारण बनाने / हटाने (ऑब्जेक्ट्स के रूप में) धीमे होते हैं, लेकिन जीआईएल (ग्लोबल दुभाषिया लॉक) की वजह से जो केवल एक थ्रेड को एक समय में निष्पादित करने की अनुमति देता है, न ही ये वास्तव में समानांतर होते हैं
  • जेआरबीई के पास ओएस द्वारा निर्धारित वास्तविक धागे भी हैं, और वास्तव में समवर्ती हैं

निष्कर्ष

2-कोर सीपीयू पर चलने वाला एक थ्रेडेड प्रोग्राम थ्रूइंग पॉइंट ऑफ व्यू के बारे में जेआरबीई पर फिर से लागू होगा

सूचना!

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


जवाब के लिए 6 № 2

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

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


जवाब के लिए 3 № 3

मैं एक नियमित JRuby उपयोगकर्ता और सबसे बड़ा हूँअंतर यह है कि जेआरबी धागे वास्तव में समवर्ती हैं। वे वास्तव में सिस्टम स्तर धागे हैं ताकि उन्हें कई कोरों पर समवर्ती रूप से निष्पादित किया जा सके। मुझे किसी भी जगह की जानकारी नहीं है जहां एमआरआई रूबी 1.8 कोड जेआरबी पर धीमा चलता है। आप इस सवाल की जांच करने पर विचार कर सकते हैं क्या रूबी असली मल्टीथ्रेडिंग है?.