एफ # प्रदर्शन बनाम एरलंग प्रदर्शन, क्या सबूत है कि एरलंग का वीएम तेज है?


19

मैं कार्यात्मक प्रोग्रामिंग सीखने में समय लगा रहा हूं और मैं उस हिस्से पर आ गया हूं जहां मैं ट्यूटोरियल या उदाहरणों में सिर्फ डबलिंग के बजाय एक प्रोजेक्ट लिखना शुरू करना चाहता हूं।

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

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

जब से मैं .NET में विकसित करने के लिए उपयोग किया जाता हूं, मैं संभवतः एफ # के साथ एर्लांग से बहुत तेज गति से उठ सकता हूं, लेकिन मुझे यह समझाने के लिए कोई संसाधन नहीं मिल सकता है कि एफ # एर्लांग के रूप में स्केलेबल है।

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

यदि मैंने जो कुछ भी पूछने की कोशिश कर रहा है, उसके साथ अच्छा काम नहीं किया है, तो कृपया अधिक सत्यापन के लिए पूछें।


12
भाषा में गति नहीं है। विशिष्ट इनपुट पर एक विशिष्ट प्रोग्राम चलाने वाली विशिष्ट भाषा कार्यान्वयन (इसमें प्रोग्राम के आधार पर संपूर्ण बाहरी दुनिया शामिल हो सकती है) की गति होती है।

1
.NET रनटाइम पर F # रन और Erlang अपने वीएम पर चलता है। एरलैंग की प्रक्रियाओं को हल्की बनाम ऐसी भाषाओं के रूप में माना जाता है जो इसके डोमेन में हैं (जैसे स्काला)। एक सिमुलेशन स्पॉनिंग नोड्स और बहुत सारे संदेशों को पारित करने के लिए, क्या .NET / मोनो रनटाइम सिर्फ उतना ही अच्छा है जितना कि एरलांग का वीएम या एरलांग का वीएम श्रेष्ठ है?
afuzzyllama

3
@ डायलेन: भाषाओं में प्रदर्शन विशेषताएँ होती हैं।
जॉन हारोप

2
@JonHarrop ऐसा कैसे? एक प्रोग्रामिंग भाषा केवल कुछ वाक्य रचना और संबंधित शब्दार्थ है।

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

जवाबों:


21

"व्यवहार्य" से आपका क्या तात्पर्य है? "सबसे अधिक प्रेस होने" के लिए भाषा चुनने का सबसे अच्छा तरीका जरूरी नहीं है।

एर्लैंग की प्रसिद्धि का दावा बड़े पैमाने पर समानांतरकरण की क्षमता है। यही कारण है कि यह आमतौर पर एरिक्सन फोन स्विच में उपयोग किया जाता है। एरलैंग नरम-वास्तविक समय है, इसलिए आप इसके बारे में कुछ निश्चित प्रदर्शन की गारंटी दे सकते हैं।

.NET Jitter की अनुकूलन क्षमताओं से F # लाभ। इसके अलावा, भाषा को ही उच्च प्रदर्शन वाली कार्यात्मक भाषा (यह OCaml का एक प्रकार है, व्यापक रूप से वित्तीय उद्योग में इसकी गति के कारण उपयोग किया जाता है) के रूप में डिज़ाइन किया गया है।

अंततः, जब तक आप एक ही समय में लाखों छोटे एजेंटों को चलाने की योजना नहीं बनाते हैं (जो कि एरलांग के लिए अनुकूलित है), एफ # कार्य के लिए होना चाहिए।

यह पृष्ठ Erlang के लिए उपयुक्त उपयोग मामलों की व्याख्या करता है।


"व्यवहार्य" से मेरा मतलब स्केलेबल है। मुझे पता है कि प्रेस होने का मतलब यह नहीं है कि जरूरी है कि भाषा में बेहतर है, लेकिन ऐसा लगता है कि Erlang साबित हो गया है (कम से कम एरिक्सन द्वारा)। एजेंटों से आपका क्या मतलब है? प्रक्रियाओं?
afuzzyllama

1
हाँ। एर्लैंग एक ही समय में एक एरिक्सन स्विच पर कई फोन कॉल को संभालने के लिए सिद्ध किया गया है। यदि आपके उपयोग का मामला समान है तो आपको यह पता लगाना होगा। मैं देखता हूं कि अपेक्षाकृत विशेष उपयोग के मामले के रूप में; यदि यह विशेषता आपके आवेदन में अनुपस्थित है , तो मुझे एर्लैंग का उपयोग करने का कोई लाभ नहीं दिखता है, और एर्लांग पृष्ठ वास्तव में कुछ उपयोग के मामलों का वर्णन करता है, जिसके लिए एर्लैंग उपयुक्त नहीं है
रॉबर्ट हार्वे

2
एजेंटों, अभिनेताओं, यह एक डिजाइन अवधारणा है जो कार्यात्मक भाषा चर्चाओं में बहुत ऊपर आती है; मुझे आश्चर्य है कि आपने अभी तक इसे नहीं चलाया है। en.wikipedia.org/wiki/Agent-based_model
पैट्रिक ह्यूजेस

दूसरे शब्दों में, क्या आपको इस तरह के एर्लांग प्रदान करने वाले बड़े पैमाने पर स्केलेबिलिटी (अब या अंततः) की आवश्यकता है? ज्यादातर कार्यक्रम नहीं होते।
रॉबर्ट हार्वे

1
F # में एजेंट मॉडल भी है - थोड़ा-सा क्रिप्टोकरंसी नाम से 'मेलबॉक्सप्रोसेसर' का उपयोग करना, जो एरलांग की तरह ही है। मैं हालांकि प्रत्येक के सापेक्ष प्रदर्शन विशेषताओं पर टिप्पणी नहीं कर सकता।
फाइनेंक

7

इस विषय पर कुछ वस्तुनिष्ठ वक्तव्य दिए जा सकते हैं क्योंकि इन दोनों भाषाओं का प्रदर्शन अनुप्रयोग और प्रोग्रामिंग शैली पर बहुत अधिक निर्भर है।

एकमात्र सलाह जो मैं दे सकता हूं वह यह है कि F # में एक स्थिर प्रकार की प्रणाली का प्रदर्शन लाभ है और CLR प्रदर्शन को बेहतर बनाने के लिए एक अच्छा काम करता है। F # में एसिंक्रोनस एजेंट और मैसेज पास है लेकिन इसे ऑप्टिमाइज़ नहीं किया गया है और सिंक्रोनस कोड अक्सर 10 × से अधिक तेज होता है।

Erlang गतिशील रूप से टाइप किया गया है जो प्रदर्शन के मामले में एक महत्वपूर्ण नुकसान के रूप में डालता है (बहुत अधिक मुक्केबाजी की उम्मीद करें) लेकिन इसे अतुल्यकालिक एजेंटों के बीच गुजरने वाले तेज संदेश का समर्थन करने के लिए जमीन से बनाया गया था, ताकि समतुल्य F # की तुलना में बहुत तेजी से हो सके। । हालाँकि, मेरे पास इसे वापस करने के लिए कोई बेंचमार्क परिणाम नहीं है: यह सिर्फ मेरी अपेक्षा है।

एक तरफ के रूप में, एरलंग और एफ # दोनों ही छोटे समुदायों के साथ अपेक्षाकृत फ्रिंज भाषाएं हैं और, उनके अलग-अलग लक्षित बाजारों के कारण, दोनों से परिचित लोग दुर्लभ हैं। एकमात्र व्यक्ति जिसके बारे में मैं सोच सकता हूं कि जेसपेर लुइस एंडरसन हैं, लेकिन मुझे यकीन नहीं है कि उन्होंने एफ # कितना किया है।


4

आप इस पोस्ट को जो आर्मस्ट्रांग: http://erlang.org/pipermail/erlang-questions/2012-Febdays/064277.html द्वारा पढ़ें।

इसकी कमी यह है कि एरलांग को तेजी से तैयार नहीं किया गया था! यह कई मामलों में यथोचित रूप से तेज़ है लेकिन यह दोष सहिष्णुता और स्थिरता जैसे मुद्दों के लिए माध्यमिक है।

सच यह है कि एर्लांग और एफ # दोनों अच्छी भाषाएं हैं, और जब मैंने केवल एफ # पर एक त्वरित नज़र डाली है, तो मैंने एरलंग पर एक किताब लिखी है: बिल्डिंग वेब एप्लीकेशन विद एर्लैंग और मैं कह सकता हूं कि यह काम करने के लिए एक मजेदार भाषा है।

मैं यह भी कहना चाहूंगा कि अगले 6-9 महीनों में प्रकाशित होने वाली कार्यात्मक भाषा की पुस्तकों में तेजी देखी जा सकती है। मुझे एरलांग (मेरा सहित) पर कम से कम 4 का पता है, वन ऑन हास्केल, साथ ही ओक्ज़्मल, क्लीजुर और एफ # पर टाइटल।

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