मैं कई महीनों के लिए एलएलवीएम चालू और बंद कर रहा हूं। मैंने OCaml प्रोग्रामिंग भाषा से एलएलवीएम के उपयोग को कवर करने वाले दो OCaml Journal लेख लिखे हैं। यह विशेष रूप से दिलचस्प है क्योंकि ओकैमल भाषा कंपेलरों को लिखने के लिए आदर्श है और इसमें पार्सिंग के लिए शक्तिशाली और परिपक्व औजारों और पुस्तकालयों का भरपूर धन है।
कुल मिलाकर, मेरा अनुभव बेहद सकारात्मक रहा है। एलएलवीएम टिन पर जो कहता है वह करता है और इसका उपयोग करना बहुत आसान है। जेनरेट कोड का प्रदर्शन शानदार है। मैंने लिखे गए कार्यक्रमों में से एक था एक साधारण छोटा ब्रेनफ * सीके कंपाइलर जो मैंने परीक्षण किए गए किसी भी कंपाइलर (जीसीसी समेत) के कुछ सबसे तेज़ निष्पादन योग्य उत्पन्न करता है।
मेरे पास एलएलवीएम के साथ केवल दो पकड़ हैं। सबसे पहले, यह अपवाद बढ़ाने के बजाए कुछ भी गलत होने पर abort() का उपयोग करता है। यह अपने लेखकों द्वारा एक जानबूझकर डिजाइन निर्णय था जो एलएलवीएम से अपवादों के सभी उपयोगों को हटाने का प्रयास कर रहे हैं, लेकिन एलएलवीएम का उपयोग करने वाले कंपाइलर को डीबग करने का प्रयास करते समय ओकैम से बैकट्रैक प्राप्त करना असंभव हो जाता है: आपका प्रोग्राम सिर्फ एलएलवीएम से टेक्स्ट स्पष्टीकरण के साथ मर जाता है लेकिन आपके स्रोत में त्रुटि कहां से कोई सुराग नहीं है। दूसरा, एलएलवीएम की संकलित लाइब्रेरी राक्षसी रूप से बड़ी (20 एमबी) है। मुझे लगता है कि यह सी ++ द्वारा किए गए ब्लोट के कारण है, लेकिन यह संकलन को धीमा कर देता है।
संपादित करें: एलएलवीएम पर मेरा काम उच्च प्रदर्शन वाले उच्च स्तरीय कचरे से एकत्रित वर्चुअल मशीन के निर्माण में समाप्त हुआ। मुफ्त डाउनलोड here और संबंधित benchmarks (वाह!) देखें। @ एलेक्स: मैं उस बीएफ कंपाइलर को आपके लिए कहीं भी प्राप्त करूंगा।
स्रोत
2008-11-22 07:22:34
मैंने निम्नलिखित दस्तावेज़ लिखा है जो एलएलवीएम के लाभों पर चर्चा करता है। http://llvm4eclipsecdt.googlecode.com/files/Benefits%20of%20the%20LLVM%20compiler%20infrastructure.pdf –