एल्म कंपाइलर हमेशा के लिए चल रहा है, कंप्यूटर सिर्फ गर्म हो रहा है


100

मुझे यकीन नहीं है कि इस मुद्दे का क्या कारण है, लेकिन एक परियोजना में, मैं निर्माण कर रहा हूं, कंपाइलर को एक मॉड्यूल को संकलित करने में घंटों लग रहे हैं। मेरे कोडबेस का कुल आकार 352KB है, लेकिन कोई भी मॉड्यूल 10KB से अधिक नहीं है। मैं एक मूल बंदरगाह का उपयोग कर रहा हूं, लेकिन यह बहुत तुच्छ है; मैं बस Date.now()इसके साथ ला रहा हूं ।

वहाँ कुछ अच्छी तरह से जाना जाता है कि एल्म संकलक हमेशा के लिए संकलन करने के लिए ले जाएगा? मेरे पास कई निर्भरता नहीं हैं, लेकिन मैं एचटीएमएल का उपयोग कर रहा हूं। मैं वास्तव में किसी भी संकेत की सराहना करता हूं कि इससे क्या होगा।

संपादित करें

इसलिए यह पता चलता है कि बड़े मामले अभिव्यक्तियां ऑप्टिमाइज़र को 0.16 के रूप में लंबे समय तक ले जाएगा। यहाँ एल्म-चर्चा पर चर्चा की जा रही है कि इस मुद्दे को उठाया जाए, और गंदे केस का मिलान किया जाए

मुझे लगता है कि क्रिया होने और गाजर को वहाँ रखने के लिए, एल्म के संकलक केस-मैचिंग के लिए इस मार्ग को क्यों लेंगे? यहां अंतर्निहित मशीनरी क्या चल रही है? केस स्टेटमेंट पर 60+ पैटर्न मैचों के अनुकूलन के लिए कंपाइलर को एक घंटे से अधिक समय क्यों लगेगा?


4
मैं उत्सुक हूँ। एल्म कंपाइलर किस प्रकार का अनुकूलन करता है जो केस एक्सप्रेशन को संकलित करने में घंटों लेता है? आपकी स्थिति की अभिव्यक्ति बहुत बड़ी नहीं लगती (कम से कम कंप्यूटर के लिए पर्याप्त बड़ी नहीं)। इसका मतलब यह है कि एल्म संकलक के पास वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में वास्तव में बहुत बुरा अनुकूलन एल्गोरिथ्म है। उदाहरण के लिए, कल्पना करें कि सभी 721 पोकेमोन के साथ एक मामले की अभिव्यक्ति को संकलित करने में कितना समय लगेगा।
आदित एम शाह

4
मुझे लगता है कि उत्तर यहां झूठ है , शायद आपको haskellटैग जोड़ने की कोशिश करनी चाहिए और देखें कि क्या हैस्केल लोग हमारे लिए कुछ प्रकट कर सकते हैं।
आधा ज़ेबरा

5
मुझे लगता है कि आपको केस के सामान को ठीक करने के लिए एक बेहतर स्थान पर एक नया प्रश्न पूछना चाहिए, और केवल इस बात को समझाकर अपने जवाब दें कि मामला सामान धीमा है। क्यों, संबंधित कोड यहां दिखता है: github.com/elm-lang/elm-compiler/blob/master/src/Optimize उद्धृत स्कॉट एंड रैमसे पेपर बताता है कि कैसे "छोटे शाखाओं में बंटने वाला कारक" अनुमानी विनाशकारी रूप से धीमा है। उपरोक्त कोड में कि हेयूरिस्टिक को टाईब्रेकर के रूप में उपयोग किया जाता है जब छोटे डिफॉल्ट्स संबंध बनाते हैं। इसलिए, मैं आपके बुरे उदाहरणों में शर्त लगाता हूं, छोटे डिफ़ॉल्ट बहुत संबंध रखते हैं और हम भयानक मामले को मारते हैं। मेरा लेना: एल्म को एक कारक के रूप में एसबीएफ का उपयोग नहीं करना चाहिए, पूर्ण विराम।
sclv

24
क्या आप इस प्रश्न का स्व-उत्तर दे सकते हैं ताकि यह अनुत्तरित सूची में न दिखे?
जूलियन लेविस्टन

5
क्या यह वास्तव में संकलन को पूरा करता है?
वर्थि 7

जवाबों:


3

बड़े मामले अभिव्यक्तियों के कारण ऑप्टिमाइज़र को लंबे समय तक ले जाएगा, 0.16 के रूप में। यहाँ एल्म-चर्चा पर चर्चा की जा रही है कि इस मुद्दे को उठाया जाए, और गंदे केस का मिलान किया जाए

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