2008-10-10 11 views
8

बस सोच रहा है कि क्या .NET ऐप को समय से पहले मूल मशीन कोड में संकलित किया जा सकता है? मैं ऐसा करने की योजना नहीं बना रहा हूं, भले ही मैं कर सकूं; मैं सिर्फ उत्सुक हूँ।क्या .NET ऐप को मूल में संकलित किया जा सकता है?

धन्यवाद

+1

@ कोडी वर्तनी सुधारों के लिए धन्यवाद जो मुझे प्रवेश करने से पहले मुझे सबूत पढ़ने के लिए सिखाएगा। –

उत्तर

11

आप इसे समय से आगे संकलित करने के लिए NGen उपयोग कर सकते हैं, लेकिन यह अभी भी नेट ढांचे पर निर्भर करता है। रेमोट्सॉफ्ट के सैलामैंडर (एक वाणिज्यिक ऐप) एक ढांचा-कम ऐप बना सकता है।

1

ngen का उपयोग किसी छवि को 'प्री-जेआईटी' में किया जा सकता है, इसलिए यह डिस्क स्टार्ट अप समय को कम करने के लिए देशी रूप में डिस्क पर उपलब्ध है।

+0

बीटीडब्लू: क्या एनजेन-संकलित अनुप्रयोग मानक .net (स्टार्टअप-टाइम के बावजूद) से धीमे चलते हैं? मैंने सोचा कि जेआईटी-कंपाइलर विशेष रूप से लैम्ब्डा-एक्सप्रेशन के साथ रनटाइम पर बहुत सारे अनुकूलन कर सकता है। – Dario

5

आप आईएल को मूल बाइनरी में संकलित कर सकते हैं। ऐसे उत्पाद हैं जो इसे करते हैं।

बड़ा सवाल यह है कि ऐसा करना चाहिए आप ...

आप निकालना सभी डॉट नेट के बिना चलाने के लिए शुद्ध निर्भरता डॉट चाहते हैं

मूल रूप से इन उत्पादों क्या कर रहे हैं मशीन स्तर तक नीचे precompiling है

(आमतौर पर x86) और फिर स्थिर रूप से आपके exe में सभी आवश्यक पुस्तकालयों सहित। आमतौर पर इसका परिणाम बहुत बड़ा होता है। और, सबसे महत्वपूर्ण बात यह है कि अब आपके पास वास्तव में आपके लक्ष्य मशीन पर रनटाइम नहीं है। आपके पास रनटाइम का एक हिस्सा है जिसे मूल संकलक ने शामिल करना चुना है।

तुम सिर्फ एक तेजी से JIT समय

तुम भी NGen उपयोग कर सकते हैं एक देशी द्विआधारी करने के लिए इसे संकलित करने के लिए प्राप्त करना चाहते हैं, लेकिन आप अभी भी डॉट नेट पर सभी निर्भरता है। लक्ष्य मशीनों को अभी भी ढांचे की आवश्यकता है, आदि

लेकिन, जब आप ngen करते हैं तो आप ऐप को 64 बिट तक ऑटो को बढ़ावा देने की क्षमता खो देते हैं। यदि आपका ऐप प्रीकंपिल्ड है तो आपको एक मोड को मजबूर करना होगा। यदि कोई उपयोगकर्ता 64 बिट मशीन पर चल रहा है तो आपका आईएल कोड प्रचारित होगा (जब तक कि आप इसे फ़्लैग न करें)।

अधिकांश ऐप्स में जेआईटी समय आपकी सबसे बड़ी बाधा नहीं है। यह ढांचे पुस्तकालयों और अन्य संबंधित आवश्यकताओं की लोडिंग है।

यदि आपको वास्तव में इसकी आवश्यकता है तो आप मौजूदा उपयोगकर्ताओं को लक्षित मशीन प्राप्त करने के लिए सेटअप एप के भीतर ngen कर सकते हैं।

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

1

मोनो के पास समय (एओटी) compiler है जो देशी कोड को छोड़ सकता है।

संबंधित मुद्दे

 संबंधित मुद्दे