मैं एक रूबी प्रोग्राम को अनुकूलित करने के लिए देख रहा हूं जो बहुत सारे डेटा पर गहन गणना है। मुझे सी नहीं पता है और रुबी को चुना है (नहीं कि मैं इसे अच्छी तरह से जानता हूं) और मैं परिणाम के साथ काफी खुश हूं, इसे निष्पादित करने के समय के अलावा। यह बहुत सारे डेटा है, और बिना पैसे खर्च किए, मैं जानना चाहता हूं कि मैं यह सुनिश्चित करने के लिए क्या कर सकता हूं कि मैं अपने सिस्टम संसाधनों को अधिकतम कर रहा हूं।सभी प्रोसेसर पर रूबी प्रोग्राम चलाना
जब मैं मूल रूबी प्रोग्राम चलाता हूं, तो क्या यह एक प्रोसेसर का उपयोग करता है? यदि मैंने विशेष रूप से प्रोसेसर को कार्यों को असाइन नहीं किया है, तो रूबी मेरे प्रोग्राम को नहीं पढ़ेगी और जितनी जल्दी संभव हो सके प्रोग्राम को पूरा करने के लिए प्रत्येक प्रोसेसर को जादुई रूप से लोड करेगा? मैं नहीं मान रहा हूं ...
मैं रूबी को तेज़ करने पर थोड़ा सा पढ़ रहा हूं, और एक और थ्रेड में पढ़ा है कि रुबी सच मल्टीथ्रेडिंग का समर्थन नहीं करती है (हालांकि यह कहा जाता है कि जेआरबीई करता है)। लेकिन, अगर मैं अपने कार्यक्रम को दो हिस्सों में "तोड़ना" चाहता था जिसे अलग-अलग उदाहरणों में चलाया जा सकता है और इन्हें पैरारल में चलाया जा सकता है ... क्या ये दो भाग स्वचालित रूप से दो अलग प्रोसेसर पर चलेंगे? अगर मेरे पास चार प्रोसेसर थे और चार गोले खोल दिए और कार्यक्रम के चार अलग-अलग हिस्सों (1/4) भाग गए - क्या यह समय 1/4 में पूरा होगा?
अद्यतन
टिप्पणियों को पढ़ने के बाद मैं JRuby एक शॉट देने का फैसला किया। ऐप को पोर्ट करना मुश्किल नहीं था। मैंने अभी तक "आड़ू" का उपयोग नहीं किया है, लेकिन बस इसे JRuby में चलाकर, ऐप 1/4 समय में चलता है !!! पागल। मैंने उस बदलाव की अपेक्षा नहीं की थी। देने के लिए जा रहे हैं। अब एक शॉट करें और देखें कि इससे चीजों में सुधार कैसे होता है। अभी भी उस बढ़ावा पर विश्वास नहीं कर सकते हैं।
अद्यतन # 2
बस आड़ू को आज़माएं। उस समय से 15% अधिक शेविंग समाप्त हो गया। तो JRuby पर स्विचिंग और पीच का उपयोग निश्चित रूप से इसके लायक था।
सभी को धन्यवाद!
स्रोत कोड को देखे बिना हम अनुमान लगा रहे हैं कि आपके आवेदन को तेज़ करने के लिए क्या किया जा सकता है। हालांकि, अगर आप कुछ चीजें कठिन/धीमी तरीके से कर रहे हैं, तो इसे थोड़ा सा गति देना संभव हो सकता है। –