लोग क्यों कहते हैं कि रूबी धीमी है? [बन्द है]


184

मुझे रूबी ऑन रेल्स पसंद है और मैं इसे अपने सभी वेब डेवलपमेंट प्रोजेक्ट्स के लिए इस्तेमाल करता हूं। कुछ साल पहले रेल्स को मेमोरी हॉग होने के बारे में बहुत सारी बातें हुई थीं और इस बारे में कि यह बहुत अच्छी तरह से पैमाने पर नहीं थी, लेकिन इन सुझावों को ग्रीग पोलैक ने यहां रखा था

हाल ही में, मैं लोगों को यह कहते हुए सुन रहा हूं कि रूबी खुद धीमी है।

  • रूबी को धीमा क्यों माना जाता है?

मैं रूबी को धीमा नहीं लगता, लेकिन फिर से, मैं इसे बस साधारण CRUD ऐप और कंपनी ब्लॉग बनाने के लिए उपयोग कर रहा हूं। रूबी के धीमे हो जाने से पहले मुझे किस तरह की परियोजनाओं की आवश्यकता होगी? या यह सुस्ती सिर्फ कुछ है जो सभी प्रोग्रामिंग भाषाओं को प्रभावित करता है?

  • रूबी प्रोग्रामर के रूप में आपके पास क्या विकल्प हैं यदि आप इस "सुस्ती" से निपटना चाहते हैं?

  • रूबी का कौन सा संस्करण स्टैक ओवरफ्लो की तरह एक एप्लिकेशन के लिए उपयुक्त होगा जहां गति महत्वपूर्ण है और ट्रैफ़िक तीव्र है?

प्रश्न व्यक्तिपरक हैं, और मुझे महसूस होता है कि आर्किटेक्चरल सेटअप (EC2 बनाम स्टैंडअलोन सर्वर आदि) एक बड़ा बदलाव करता है, लेकिन मैं सुनना चाहूंगा कि लोग रूबी के बारे में क्या सोचते हैं कि वह धीमा है।

अंत में, मुझे रूबी 2.0 पर ज्यादा खबर नहीं मिल रही है - मुझे लगता है कि हम उससे कुछ साल दूर हैं?



youtube.com/… रूबी २.१
नितिन

महान जवाबों के अलावा, उनमें से कोई भी वास्तव में क्यों नहीं जवाब देता है। बेहतर अंतर्दृष्टि संबंधित प्रश्नों में हैं जिसका उल्लेख नाकिलोन ने किया था
आंद्रे फिगयूरेडो

जवाबों:


184

रूबी को धीमा क्यों माना जाता है?

क्योंकि यदि आप रूबी और अन्य भाषाओं के बीच विशिष्ट बेंचमार्क चलाते हैं, तो रूबी हार जाती है।

मैं रूबी को धीमा नहीं लगता, लेकिन फिर से, मैं इसे बस साधारण CRUD ऐप और कंपनी ब्लॉग बनाने के लिए उपयोग कर रहा हूं। रूबी के धीमे हो जाने से पहले मुझे किस तरह की परियोजनाओं की आवश्यकता होगी? या यह सुस्ती सिर्फ कुछ है जो सभी प्रोग्रामिंग भाषाओं को प्रभावित करता है?

रूबी शायद आपको वास्तविक समय के डिजिटल सिग्नल प्रोसेसिंग एप्लिकेशन, या किसी भी प्रकार के वास्तविक समय नियंत्रण प्रणाली को लिखने में अच्छी तरह से सेवा नहीं देगी। रूबी (आज के वीएम के साथ) संभवत: एक संसाधन-विवश कंप्यूटर जैसे स्मार्टफ़ोन पर चोक कर देगी।

याद रखें कि आपके वेब एप्लिकेशन पर बहुत सारी प्रोसेसिंग वास्तव में C. में विकसित सॉफ्टवेयर द्वारा की जाती है। जैसे कि Apache, Thin, Nginx, SQLite, MySQL, PostgreSQL, कई पार्सिंग लाइब्रेरी, RMagick, TCP / IP, आदि। C रूबी द्वारा उपयोग किए जाने वाले C प्रोग्राम हैं। । रूबी गोंद और व्यापार तर्क प्रदान करता है।

रूबी प्रोग्रामर के रूप में आपके पास क्या विकल्प हैं यदि आप इस "सुस्ती" से निपटना चाहते हैं?

तेज भाषा पर स्विच करें। लेकिन यह एक लागत वहन करती है। यह एक लागत है जो इसके लायक हो सकती है। लेकिन अधिकांश वेब एप्लिकेशनों के लिए, भाषा का चुनाव एक प्रासंगिक कारक नहीं है क्योंकि एक तेज़ भाषा का उपयोग करने के लिए पर्याप्त ट्रैफ़िक का औचित्य नहीं है जिसे विकसित करने के लिए बहुत अधिक लागत आती है।

रूबी का कौन सा संस्करण स्टैक ओवरफ्लो की तरह एक एप्लिकेशन के लिए उपयुक्त होगा जहां गति महत्वपूर्ण है और ट्रैफ़िक तीव्र है?

अन्य लोगों ने इसका उत्तर दिया है - JRuby, IronRuby, REE आपके एप्लिकेशन के रूबी भाग को उन प्लेटफार्मों पर तेज़ी से चलाएगा जो VMs को वहन कर सकते हैं। और चूंकि यह अक्सर रूबी नहीं होता है, जो धीमेपन का कारण बनता है, लेकिन आपके कंप्यूटर सिस्टम आर्किटेक्चर और एप्लिकेशन आर्किटेक्चर, आप डेटाबेस प्रतिकृति, कई एप्लिकेशन सर्वर, रिवर्स प्रॉक्सी के साथ लोडिंग, HTTP कैशिंग, मेम्केचे, अजाक्स, क्लाइंट-साइड कैशिंग, आदि जैसे सामान कर सकते हैं। इस सामान में से कोई भी रूबी नहीं है।

अंत में, मुझे रूबी 2.0 पर ज्यादा खबर नहीं मिल रही है - मुझे लगता है कि हम उससे कुछ साल दूर हैं?

ज्यादातर लोग रूबी 1.9.1 का इंतजार कर रहे हैं। मैं खुद रूबी 1.9.1 पर रूबी पर रेल 3.1 का इंतजार कर रहा हूं।

अंत में, कृपया याद रखें कि बहुत सारे डेवलपर्स रूबी को चुनते हैं क्योंकि यह अन्य भाषाओं की तुलना में प्रोग्रामिंग को अधिक आनंददायक अनुभव बनाता है, और क्योंकि रूबी विथ रेल्स कुशल वेब डेवलपर्स को बहुत तेज़ी से एप्लिकेशन विकसित करने में सक्षम बनाता है।


3
बहुत विचार करने के बाद, मैंने फैसला किया है कि यह सबसे अच्छा जवाब है। धन्यवाद, मुझे सिग्नल प्रोसेसिंग ऐप के बारे में सादृश्य पसंद है। यह देखना आसान है कि लोग इन सभी उपयोगी जवाबों के बाद किस बारे में बात कर रहे हैं।
स्टीफनमुर्डोच

1
हाँ, आप रूबी 2 से कुछ साल दूर थे, रूबी 2.0.0 24 फरवरी 2013 को रिलीज़ हुई
मॉर्गन

3
रूबी 2.1 का उपयोग करने से मेरा अनुभव यह है कि यह रूबी 2.0 में चल रहे एक ही ऐप की तुलना में लगभग 25% अधिक तेज है
मैट कोनोली

14
भाषाएँ धीमी या तेज़ नहीं हैं, उनके कार्यान्वयन, दुभाषिए और संकलन हैं
:)

122

सबसे पहले, क्या करने के लिए सम्मान के साथ धीमी ? सी? अजगर? चलो कुछ नंबर प्राप्त पर कंप्यूटर लैंग्वेज बेंचमार्क गेम :

रूबी को धीमा क्यों माना जाता है?

निर्भर करता है कि आप किससे पूछते हैं। आपको बताया जा सकता है कि:

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

लेकिन, फिर, क्या सम्मान के साथ धीमा? रूबी 1.9 C (जो कि 300x तक तेज़ हो सकती है) की तुलना में पायथन और पीएचपी (एक 3x प्रदर्शन कारक के भीतर) जितना तेज़ है, इसलिए उपरोक्त (थ्रेडिंग विचार के अपवाद के साथ), आपका आवेदन इस पहलू पर बहुत अधिक निर्भर होना चाहिए ) काफी हद तक अकादमिक हैं।

रूबी प्रोग्रामर के रूप में आपके पास क्या विकल्प हैं यदि आप इस "सुस्ती" से निपटना चाहते हैं?

मापनीयता के लिए लिखें और उस पर अधिक हार्डवेयर फेंकें (उदाहरण के लिए मेमोरी)

रूबी का कौन सा संस्करण स्टैक ओवरफ्लो की तरह एक एप्लिकेशन के लिए उपयुक्त होगा जहां गति महत्वपूर्ण है और ट्रैफ़िक तीव्र है?

खैर, आरईई ( पैसेंजर के साथ संयुक्त ) एक बहुत अच्छा उम्मीदवार होगा।


1
कचरा संग्रह खुद ही जरूरी नहीं है, बल्कि एमआरआई का कचरा संग्रह है। यदि आपको तेज रूबी की आवश्यकता है, तो आप जेआरयूबी के साथ-साथ आरईई को भी देख सकते हैं।
एंड्रियास

1
@igouy, ट्रू, मिड-2008 चरम हो सकता है। मैंने लिंक अपडेट किए, लेकिन वे कुछ महीनों में पुराने हो जाएंगे। :) किसी भी तरह से, हार्डवेयर और कुछ पैचवेल अलग हो सकते हैं, और कुछ अतिरिक्त परीक्षण जोड़े गए थे, लेकिन चीजों की बड़ी तस्वीर नहीं बदली।
vladr

11
>> परिमाण के एक ही क्रम के भीतर << यह परिमाण के उसी क्रम के भीतर है यदि आप 7 में रहते हैं या 69 तक रहते हैं। क्या यह अंतर महत्वहीन है?
.गौई

10
@igouy, मैं आपके बारे में नहीं जानता, लेकिन मैं निष्पादन की गति के मामले में अपने जीवन काल को मापने का कार्यक्रम नहीं हूं। उदाहरण के लिए, निष्पादन की गति के बारे में मुझे क्या परवाह है, HTTP प्रतिक्रिया समय है। मुझे पता है कि मैं 7ms और 69ms रेंडरिंग टाइम (esp। जब 130ms नेटवर्क लेटेंसी के शीर्ष पर सवारी करता हूं) के बीच अंतर नहीं देखूंगा। मुझे पता है कि मैं 7ms और 700ms के बीच अंतर को नोटिस करूंगा, और मैं 7ms और 7s के बीच अंतर को नोटिस करूंगा - लेकिन नहीं, 7ms और 69ms के बीच नहीं।
vladr

3
@vladr, 70ms या 700ms के बारे में क्या? क्या आप उस अंतर को देख सकते हैं?
पॉल ड्रेपर

60

यहाँ रेल के निर्माता डेविड हेनीमियर हैन्सन ने क्या कहा है:

रेल [रूबी] वेब अनुप्रयोगों के विशाल बहुमत फास्ट इनफ के लिए है। हमें प्रति दिन लाखों डायनेमिक पृष्ठ दृश्य करने वाली साइटें मिलीं। यदि आप याहू या अमेज़ॅन फ्रंट पेज के साथ समाप्त हो रहे हैं, तो यह संभावना नहीं है कि किसी भी भाषा में एक ऑफ-द-शेल्व फ्रेमवर्क आपको बहुत अच्छा करेगा। शायद आपको अपना रोल खुद करना होगा। लेकिन यकीन है, मुझे मुफ्त सीपीयू साइकिल भी चाहिए। मैं बस मुफ्त डेवलपर चक्रों के बारे में अधिक देखभाल करने के लिए होता हूं और बाद के लिए पूर्व व्यापार करने को तैयार हूं।

समस्या पर अधिक हार्डवेयर या मशीनों को फेंकना अधिक डेवलपर्स को काम पर रखने और अधिक तेज़, लेकिन भाषा को बनाए रखने के लिए कठिन है। आखिरकार, कुछ लोग सी में वेब एप्लिकेशन लिखते हैं।

रूबी 1.9 1.8 पर एक बड़ा सुधार है। रूबी 1.8 के साथ सबसे बड़ी समस्याएं इसकी व्याख्या की गई प्रकृति (कोई बायटेकोड, कोई संकलन नहीं है) और वह विधि कॉल, जो रूबी में सबसे आम ऑपरेशनों में से एक है, विशेष रूप से धीमी हैं।

यह मदद नहीं करता है कि बहुत ज्यादा सब कुछ रूबी में एक विधि खोज है - दो संख्याओं को जोड़ना, एक सरणी को अनुक्रमण करना। जहां अन्य भाषाएं हैक (पायथन) को उजागर करती हैं__add__ विधि, पर्ल का अधिभार .pm) रूबी सभी मामलों में शुद्ध OO करता है, और यदि कंपाइलर / दुभाषिया पर्याप्त चालाक नहीं है, तो यह प्रदर्शन को नुकसान पहुंचा सकता है।

अगर मैं रूबी में एक लोकप्रिय वेब एप्लिकेशन लिख रहा था, तो मेरा ध्यान कैशिंग पर होगा। किसी पृष्ठ को कैशिंग करने से उस पृष्ठ का संसाधन समय शून्य हो जाता है, जो भी भाषा आप उपयोग कर रहे हैं। वेब अनुप्रयोगों के लिए, डेटाबेस ओवरहेड और अन्य I / O भाषा की गति से बहुत अधिक मायने रखने लगते हैं, इसलिए मैं इसके अनुकूलन पर ध्यान केंद्रित करूंगा।


7
"आखिरकार, कुछ लोग सी में वेब एप्लिकेशन लिखते हैं।" - निश्चित रूप से नहीं, लेकिन कई प्रदर्शन-महत्वपूर्ण वेब-साइटें उदाहरण के लिए स्काला में ले गईं।
डारियो

6
मैं इससे 'अधिक हार्डवेयर फेंकना' से असहमत हूं। ग्राहकों को यह समझाना मुश्किल है कि उन्हें हर X महीनों की मेजबानी के लिए अधिक पैसे का भुगतान करना चाहिए क्योंकि उनके प्लेटफॉर्म को डेवलपर्स के लिए ध्यान में रखकर बनाया गया था।
केविन

9
@ केक: निश्चित रूप से विकास लागत कम होगी? अन्यथा पहली जगह में रूबी का उपयोग करने की बात क्या होगी?
rjh

4
@ केविन यह कथन थोड़ा व्यापक है। यदि आपको प्रत्येक 10% ट्रैफ़िक वृद्धि के लिए एक नया सर्वर स्थापित करने की आवश्यकता है या तो प्रति दिन कुछ 100 विज़िट के साथ, ग्राहक को स्पष्ट रूप से शिकायत करने का अधिकार होगा। वास्तविक रूप से, हालांकि, आमतौर पर आपको पुराने हार्डवेयर के साथ सामना नहीं करने से पहले, परिमाण के एक क्रम से शुरू करने और बढ़ाने के लिए बहुत अधिक यातायात की आवश्यकता होती है। उस बिंदु पर विषय "एक अच्छी समस्या है" क्षेत्र में चला जाता है और शायद ही किसी को हार्डवेयर के उन्नयन के बारे में शिकायत होगी। इसके अलावा, कोई भी "ग्राहक" इस तरह की चीजों के बारे में जानकारी के बिना इतनी उच्च यातायात वेबसाइट नहीं चलाता है।
deceze

5
@ केविन - चलो कि चारों ओर मोड़। "ग्राहकों को यह विश्वास दिलाना मुश्किल है कि उन्हें एक नई सुविधा के लिए 3 महीने इंतजार करना चाहिए क्योंकि उनके मंच को कंप्यूटर को ध्यान में रखकर बनाया गया था।" यदि वह नई सुविधा राजस्व में भारी वृद्धि करेगी, तो यह अतिरिक्त हार्डवेयर के लिए भुगतान करेगा। इसके अलावा, कई अनुप्रयोगों के लिए, एक समयपूर्व अनुकूलन के लिए, शुरू से ही एक तेज भाषा चुनना है। संभावना है कि आपकी अड़चन कहीं और होगी: डेटाबेस पढ़ता है, नेटवर्क विलंबता, आदि
नाथन लॉन्ग

34

लेखन कोड धीमा है। रीडिंग कोड धीमा है। बग ढूंढना और ठीक करना धीमा है। सुविधाएँ और एन्हांसमेंट जोड़ना धीमा है। कुछ भी जो पिछले में सुधार करता है वह एक जीत है। बहुत कम ही निष्पादन निष्पादन एक मुद्दा है।


30
@GregS: निष्पादन प्रदर्शन हमेशा एक मुद्दा है अगर यह प्रयोज्य को प्रभावित करता है। सच है, एक दूसरे या तीन में एक स्ट्रिंग के लिए एक xml फ़ाइल को स्कैन करना शुद्ध संख्या के दृष्टिकोण से कोई फर्क नहीं पड़ता, लेकिन जब आप उपयोगकर्ता-सामना करने वाले एप्लिकेशन के बारे में बात कर रहे हैं, तो कुछ सेकंड का अंतर प्रयोज्य में एक बड़ा अंतर ला सकता है।
ब्रायन ओकली

5
@ अजाक्स: नहीं, मैं शर्त लगाता हूं कि यह आपका जीतने वाला व्यक्तित्व है।
राष्ट्रपति जेम्स के। पोल्क

15
इस प्रकार मेरा रिकॉर्ड एक दिन के काम में कंपनी को $ 30,000 / वर्ष की बचत कर रहा है। उनके इंजीनियरों ने निर्णय लिया कि क्लाउड कंप्यूटिंग एल्गोरिथ्म में प्रत्येक पुनरावृत्ति पर किए गए कार्यों की संख्या को गिनने के लिए यह अधिक पठनीय है, जिससे n हो सकता है! 20,000+ इकाइयों के साथ नौकरियों पर सवाल। यह देखते हुए कि यदि 1 कार्य आइटम को छोड़ दिया गया है, तो उसे n प्रश्नों में बदल दिया जाए, और बिल को $ 130 / दिन से $ 20 / दिन तक काट दिया जाए। आलसी कोडर मुझे पैसे बनाते हैं। कृपया अधिक आलसी कोडर को प्रोत्साहित करें।
अजाक्स

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

4
निष्पादन प्रदर्शन हमेशा एक मुद्दा होता है, बस एक मुद्दे का कितना हम बात कर रहे हैं। उपयोगकर्ताओं द्वारा आपके ऐप को खरीदने से रोकने से पहले आप मोबाइल फोन पर कितनी व्याख्या कोड चला सकते हैं क्योंकि यह बैटरी को मारता है? विज्ञापन से वंचित करने से पहले उपयोगकर्ता आपके पृष्ठ के लोड होने तक कितनी देर तक प्रतीक्षा करेगा? इन प्रकार के प्रश्नों के उत्तर दें और आप निष्पादन निष्पादन को कितना महत्व देते हैं।
सकी

15

जवाब सरल है: लोगों का कहना है, क्योंकि यह गहरे लाल रंग का धीमी है है धीमी गति से अन्य भाषाओं के लिए मापा तुलना पर आधारित। हालांकि, "धीमे" रिश्तेदार हैं। अक्सर, रूबी और अन्य "धीमी" भाषाएं काफी तेज होती हैं।


हाँ, यही मैं सोच रहा था, मेरा मतलब है, लोग कहते हैं कि यह धीमा है, लेकिन यह अभी भी मेरी आवश्यकताओं के लिए जल्दी है ...
स्टीफनमुर्डोच

11
>> यह अभी भी मेरी आवश्यकताओं के लिए बहुत जल्दी है << यह सब कुछ है कि तेजी से होने की जरूरत नहीं है के लिए काफी तेज है :-)
igouy

मैं आंशिक रूप से इस पर पक्षपात कर रहा हूं, शायद यह एक पुरानी टिप्पणी है। अब हमारे पास रूबी 2.3 है, और रूबी 2.2 अनुभव से, मैंने पाया कि रेल स्टैक भारी है। अगर लोगों को तेज़ ढांचे की ज़रूरत है, तो पिडरानो को आज़माएं, पापात्रा पर आधारित है और उन्होंने रेल के आदेश को जितना संभव हो उतना करीब करने की कोशिश की, लेकिन बहुत हल्का। लेकिन वे अभी तक संस्करण 1.0 तक नहीं पहुंचे हैं, अभी भी अधिक आना बाकी है, लेकिन मेरे परीक्षण से, यह अच्छा और तेज चलता है। मैंने इसे सक्रिय रिकॉर्ड 5 और पिडरानो स्प्रोकेट के साथ काम किया है, जो रेल से उधार लिया गया है। 200 समवर्ती कनेक्शन के साथ, मुझे db क्वेरी के बिना 1.5 s प्रतिक्रिया मिल रही है, sprockets से संपत्ति के साथ
जेम्स टैन

5

सॉफ्टवेयर पर जोएल - रूबी परफॉर्मेंस रिविजिट काफी अच्छी तरह से यह बताते हैं। हालांकि पुराना हो सकता है ...

मैं आपको इसके साथ चिपकाने की सलाह दूंगा क्योंकि आप रूबी ऑन रेल्स के लिए उपयोग किए जाते हैं,
यदि आप कभी भी तो यदि आप कभी भी एक प्रदर्शन समस्या को पूरा करते हैं तो आप एक अलग भाषा और रूपरेखा का उपयोग करने पर पुनर्विचार कर सकते हैं।

उस स्थिति में मैं वास्तव में ASP.NET MVC 2 के साथ C # का सुझाव दूंगा, CRUD ऐप के लिए बहुत अच्छा काम करता है।


लिंक के लिए धन्यवाद, मुझे हमेशा जोएल की बातों को पढ़ना पसंद है। दिलचस्प टिप्पणी वह
डीएचएच

उद्धरण: " यह सभी के लिए लागू नहीं होता है, लेकिन जब लोग कहते हैं कि उन्हें रूबी के साथ प्रदर्शन की समस्या है या यह कि उन्हें कोर रूबी भाषा इंजन की तुलना में कोड को तेजी से चलाने में सक्षम होने की आवश्यकता है, तो यह करने में मदद नहीं करता है रूबी डेवलपर साइकिल बनाम सीपीयू साइकिल के बारे में भजन गाने की वकालत करती है। ”खैर कहा।
मार्क.2377

3

मैं कहूंगा कि रूबी धीमी है क्योंकि दुभाषिए को तेज बनाने में बहुत प्रयास नहीं किए गए हैं। वही अजगर पर लागू होता है। स्मॉलटाक रूबी या पाइथन की तरह ही गतिशील है, लेकिन एक परिमाण के द्वारा बेहतर प्रदर्शन करता है, http://benchmarkgame.alioth.debian.org देखें । चूँकि स्मॉलटाकल कमोबेश जावा और सी # द्वारा प्रतिस्थापित किया गया था (जो कि कम से कम 10 साल पहले है) इसके लिए कोई और प्रदर्शन अनुकूलन कार्य नहीं किया गया था और स्मालटाक अभी भी रूबी और पायथन की तुलना में तेज़ है। ज़ेरॉक्स पार्स और ओटीआई / आईबीएम में लोगों के पास उन लोगों को भुगतान करने के लिए पैसे थे जो स्मालटाक बनाने का काम तेजी से करते हैं। मुझे समझ में नहीं आता है कि Google पायथन को तेजी से बनाने के लिए पैसे खर्च नहीं करता है क्योंकि वे एक बड़ी अजगर की दुकान हैं। इसके बजाय वे गो जैसी भाषाओं के विकास पर पैसा खर्च करते हैं ...


मुझे लगता है कि यह इसलिए है क्योंकि पायथन में पहले से ही यह जगह है और आजकल इसका भारी उपयोग किया जाता है। यदि आपको उच्च प्रदर्शन की आवश्यकता है तो कई पुस्तकालय हैं जिन्हें आप उपयोग या बुनाई कर सकते हैं और अन्य सामान जो आप उपयोग कर सकते हैं।
ज़ेल्फिर कलस्टहल

मैंने जो कुछ पढ़ा उससे पहले ही रूबी 2.5 में अच्छे परिणाम मिले हैं।
मार्क.2377

2

सबसे पहले, क्या आप इस बात की परवाह करते हैं कि दूसरे आपकी पसंद की भाषा के बारे में क्या कहते हैं? जब यह काम करना है, तो आप ठीक हैं।

OO कोड को निष्पादित करने का सबसे तेज़ तरीका नहीं है, लेकिन यह कोड बनाने में मदद करता है। स्मार्ट कोड हमेशा डंबल कोड और बेकार लूप से तेज होता है। मैं एक डीबीए हूं और इनमें से बहुत सारे बेकार छोरों को देखता हूं, उन्हें छोड़ देता हूं, बेहतर कोड और प्रश्नों का उपयोग करता हूं और आवेदन तेज, बहुत तेज होता है। क्या आप अंतिम माइक्रोसेकंड के बारे में परवाह करते हैं? आपके पास गति के लिए अनुकूलित भाषाएं हो सकती हैं, दूसरे वे काम करते हैं जो उन्हें करना है और कई अलग-अलग प्रोग्रामर द्वारा बनाए रखा जा सकता है।

यह सब सिर्फ एक विकल्प है।


2

जाहिर है, गति के बारे में बात करते हुए रूबी हार जाती है। भले ही बेंचमार्क परीक्षणों से पता चलता है कि रूबी पीएचपी की तुलना में इतनी धीमी नहीं है। लेकिन बदले में, आप आसानी से बनाए रखने वाले DRY कोड प्राप्त कर रहे हैं, जो विभिन्न भाषाओं में सभी रूपरेखाओं में से सर्वश्रेष्ठ है।

एक छोटी सी परियोजना के लिए, आपको कोई सुस्ती महसूस होगी (मेरा मतलब है कि <50K उपयोगकर्ताओं की तरह) यह देखते हुए कि कोड में किसी भी जटिल गणना का उपयोग नहीं किया गया है, बस मुख्यधारा का सामान।

एक बड़ी परियोजना के लिए, संसाधनों का भुगतान करना बंद हो जाता है और डेवलपर मजदूरी से सस्ता होता है। इसके अलावा, RoR पर कोड लिखना किसी भी अन्य की तुलना में बहुत तेज हो जाता है।

2014 में जिस गति अंतर की आप बात कर रहे हैं उसका परिमाण अधिकांश वेबसाइटों के लिए महत्वहीन है।


2

वेब एप्लिकेशन में रूबी के प्रदर्शन से निपटने का तरीका किसी अन्य प्रोग्रामिंग भाषा के साथ ही है:

आर्किटेक्चर

यह अन्य वेब फ्रेमवर्क की तुलना में रेल में करना आसान है।

आवेदन स्तर पर , जो भी कैश किया जाना है उसे कैशिंग करके और एक बुद्धिमान तरीके से डीबी तक पहुंच का प्रबंधन करके (क्योंकि अड़चन आमतौर पर अधिकांश वेब एप्लिकेशन के लिए "डीबी" एक्सेस पर है)।

रेल इन समस्याओं को हल करने के लिए बहुत आसान और प्राकृतिक बनाता है। कैशिंग डेटा, पृष्ठ और टुकड़े के लिए कई सार हैं , और एक अनुकूलित और पुन: प्रयोज्य फैशन में SQL भाग से निपटने के लिए बहुत अच्छा सार भी हैं ( सक्रिय रिकॉर्ड और AREL) ) ।

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

इन्फ्रास्ट्रक्चर स्तर पर लोड संतुलन और उस सभी सामान के बारे में सोचना उचित है जिसके बारे में मुझे बहुत कुछ पता नहीं है। मैं उस सेवा प्रदाता के रूप में कुछ प्लेटफ़ॉर्म को आउटसोर्स कर सकता हूँ, जैसे हरको या इंजन यार्ड । वैसे भी। लोड संतुलन के साथ रेल की तैनाती करना शायद बहुत कठिन नहीं है।


1

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

सबसे अच्छा फिक्स अपने रूबी कोड में किसी अन्य भाषा (जैसे, सी, सी ++, फोरट्रान) में लिखे गए लक्षित मॉड्यूल का उपयोग करना है। वे भारी उठाने कर सकते हैं और आपकी स्क्रिप्ट उच्च स्तर के समन्वय मुद्दों पर ध्यान केंद्रित कर सकते हैं।


तुलना अक्सर जावा, सी #, पायथन, शायद सी ++ के बजाय पर्ल के साथ की जाती है।
rjh

5
बेशक। लेकिन मैं आपको (Tcl के एक डेवलपर के रूप में) आश्वस्त कर सकता हूं कि लोग हमेशा अन्य भाषाओं के साथ आपकी तुलना गलत तरीके से करेंगे। फिक्स उन अन्य भाषाओं का उपयोग करना है जो उन घटकों के लिए हैं जिन्हें आप एक साथ सिलाई करते हैं; यह सब एक भाषा में करना सभी कार्यों के लिए एक उपकरण का उपयोग करने जैसा है। यदि आपके पास एक हथौड़ा है, तो सब कुछ अंगूठे की तरह दिखता है।
डोनाल्ड फेलो

विदेशी भाषा मॉड्यूल का उपयोग करने के बारे में अच्छा विचार जब उनकी आवश्यकता होती है
स्टीफनमुर्डोक

>> यह कहने के लिए कि "रूबी धीमी है" योग्यता के बिना << कुछ साल पहले वे रूबी कार्यक्रमों को दिखाने के लिए गए थे जो कि Tcl कार्यक्रमों की तुलना में धीमी थी :-)
igouy

1
आप जानते हैं कि वे झूठ, शापित झूठ और बेंचमार्क के बारे में क्या कहते हैं। ;-)
डोनाल्ड फेलो

0

प्रदर्शन लगभग हमेशा अच्छे डिज़ाइन और अनुकूलित डेटाबेस इंटरैक्शन के बारे में होता है। रूबी वह करती है जिसे अधिकांश वेब साइटों को बहुत तेज़, विशेष रूप से अधिक हाल के संस्करणों की आवश्यकता होती है; और विकास की गति और रखरखाव में आसानी लागत में और ग्राहकों को खुश रखने में एक बड़ा भुगतान प्रदान करता है। मुझे लगता है कि JAVA में कुछ कार्यों के लिए धीमी निष्पादन निष्पादन है, और JAVA में विकास की कठिनाई को देखते हुए, कई डेवलपर्स सैद्धांतिक गति क्षमता की परवाह किए बिना धीमी गति से एप्लिकेशन बनाते हैं जैसा कि बेंचमार्क में दिखाया गया है (बेंचमार्क आमतौर पर एक विशिष्ट और संकीर्ण क्षमता दिखाने के लिए वंचित होते हैं)। जब मुझे गहन प्रसंस्करण की आवश्यकता होती है जो मेरे डेटाबेस की क्षमताओं के अनुकूल नहीं है, तो मैं प्लेटफ़ॉर्म के आधार पर उन कार्यों के लिए सी या ऑब्जेक्टिव-सी या कुछ अन्य सही मायने में उच्च प्रदर्शन संकलित भाषा का चयन करता हूं। अगर मुझे एक डेटाबेसड वेब एप्लिकेशन बनाने की आवश्यकता है, मैं अन्य आवश्यकताओं के आधार पर RoR या कभी-कभी C # ASP.NET का उपयोग करता हूं; क्योंकि सभी प्लेटफार्मों में ताकत और कमजोरियां हैं। आपके आवेदन की चीजों की निष्पादन गति महत्वपूर्ण है, लेकिन आखिरकार, अगर किसी भाषा के एक संकीर्ण पहलू का निष्पादन प्रदर्शन सभी मायने रखता है; तब मैं अभी भी सब कुछ के लिए असेंबलर भाषा का उपयोग कर सकता हूं।


0

लोग कहते हैं कि रूबी धीमी है क्योंकि वे रूबी कार्यक्रमों की तुलना अन्य भाषाओं में लिखे गए कार्यक्रमों से करते हैं। हो सकता है कि आपके द्वारा लिखे गए कार्यक्रमों को तेज होने की आवश्यकता न हो। हो सकता है कि रूबी लिखने वाले कार्यक्रमों के लिए वह अड़चन न हो जो चीजों को धीमा कर रहा है।

रूबी 2.1 की तुलना में जावास्क्रिप्ट वी 8 की तुलना में

रूबी 2.1 साधारण लुआ की तुलना में

रूबी 2.1 पायथन 3 की तुलना में


-5

रूबी डेवलपर उत्पादकता के लिए अच्छा प्रदर्शन करती है। प्रकृति बलों द्वारा रूबी प्रकारों की कमी के कारण संचालित विकास का परीक्षण करती है। रूबी सी लाइब्रेरी के लिए उच्च स्तर के आवरण के रूप में उपयोग किए जाने पर अच्छा प्रदर्शन करती है। रूबी लंबे समय तक चलने वाली प्रक्रियाओं के दौरान भी अच्छा प्रदर्शन करती है जब यह JVM या Rbx VM के माध्यम से मशीन कोड के लिए JIT- संकलित होती है। जब रूबी को शुद्ध रूबी कोड के साथ थोड़े समय में क्रंच करना होता है तो रूबी अच्छा प्रदर्शन नहीं करती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.