मैं एक क्रॉस-प्लेटफ़ॉर्म (मैक ओएस एक्स, विंडोज़ और लिनक्स) एप्लिकेशन को लागू करने की प्रक्रिया में हूं जो वित्तीय डेटा के बहुत सारे सीपीयू गहन विश्लेषण करेगा। विश्लेषण इंजन का बड़ा हिस्सा सी ++ में गति कारणों से लिखा जाएगा, उपयोगकर्ता-सुलभ स्क्रिप्टिंग इंजन सी ++ परीक्षण इंजन के साथ इंटरफेसिंग के साथ। मैं मौजूदा बड़े उपयोगकर्ता अड्डों के साथ अन्य लोकप्रिय सॉफ्टवेयर अनुकरण करने के लिए समय के साथ कई स्क्रिप्टिंग फ्रंट-एंड लिखना चाहता हूं। पहला मोर्चा विजुअलबासिक जैसी स्क्रिप्टिंग भाषा होगी।एलएलवीएम जेआईटी कोड को स्टेटिक एलएलवीएम पुस्तकालयों से जोड़ना?
मैं सोच रहा हूँ कि LLVM मेरी जरूरतों के लिए एकदम सही होगा। डेटा की भारी मात्रा के कारण प्रदर्शन बहुत महत्वपूर्ण है; उत्तर पाने के लिए परीक्षणों के एक रन को चलाने में घंटों या दिन लग सकते हैं। मेरा मानना है कि एलएलवीएम का उपयोग करने से मुझे एक बैक-एंड समाधान का उपयोग करने की इजाजत मिल जाएगी, जबकि मैं समय के साथ स्क्रिप्टिंग भाषा के विभिन्न स्वादों के लिए अलग-अलग फ्रंट-सिरों को लागू करता हूं।
परीक्षण इंजन ही इंटरफ़ेस और परीक्षण से अलग किया जाएगा और भी प्रगति और परिणाम परीक्षण प्रबंधन इंटरफ़ेस करने के लिए रिपोर्ट की जा रही के साथ एक अलग प्रक्रिया में आयोजित होगा। टेस्ट में परीक्षण इंजन कोड के साथ एकीकृत स्क्रिप्टिंग कोड शामिल होगा।
मैंने लिखा एक समान वाणिज्यिक परीक्षण प्रणाली के पिछले कार्यान्वयन में, मैंने एक तेज़ दुभाषिया बनाया जो आसानी से परीक्षण पुस्तकालय में हस्तक्षेप करता था क्योंकि यह सी ++ में लिखा गया था और सीधे परीक्षण इंजन लाइब्रेरी से जुड़ा हुआ था। लाइब्रेरी ऑब्जेक्ट्स की जांच करने के लिए स्क्रिप्टिंग कोड से कॉलबैक में महत्वपूर्ण ओवरहेड वाले प्रारूपों के बीच अनुवाद शामिल था।
मैं कल्पना कर रहा हूं कि एलएलवीएम के साथ, मैं कॉलबैक को सी ++ में सीधे कार्यान्वित कर सकता हूं ताकि मैं स्क्रिप्टिंग कोड लगभग उसी तरह काम कर सकूं जैसे यह सी ++ में लिखा गया हो। इसी प्रकार, यदि सभी कोड को एलएलवीएम बाइट-कोड प्रारूप में संकलित किया गया था, ऐसा लगता है कि एलएलवीएम अनुकूलक स्क्रिप्टिंग भाषा और सी ++ में लिखे गए परीक्षण इंजन कोड के बीच की सीमाओं में अनुकूलित कर सकते हैं।
मैं नहीं चाहता कि परीक्षण इंजन हर बार संकलन करने के लिए। आदर्श रूप में, मैं केवल जेआईटी को केवल स्क्रिप्टिंग कोड संकलित करना चाहता हूं। छोटे परीक्षणों के लिए, मैं कुछ अनुकूलन पास छोड़ दूंगा, जबकि बड़े परीक्षणों के लिए, मैं लिंक के दौरान पूर्ण अनुकूलन करता हूं।
तो यह संभव है? क्या मैं परीक्षण इंजन को .o ऑब्जेक्ट फ़ाइल या .a लाइब्रेरी फ़ाइल में प्रीकंपाइल कर सकता हूं और फिर जेआईटी का उपयोग करके स्क्रिप्टिंग कोड में लिंक कर सकता हूं?
अंत में, आदर्श, मैं पटकथा कोड एक विशिष्ट सी ++ वर्ग के लिए उपवर्गों के रूप में विशिष्ट तरीकों को लागू करना चाहते हैं। इसलिए सी ++ परीक्षण इंजन केवल सी ++ ऑब्जेक्ट्स देखेगा जबकि जेआईटी सेटअप कोड ने स्क्रिप्टिंग कोड संकलित किया था जो ऑब्जेक्ट्स के कुछ तरीकों को लागू करता था। ऐसा लगता है कि अगर मैंने सही नाम मैंगलिंग एल्गोरिदम का उपयोग किया है तो यह सी ++ विधि कॉल की तरह दिखने के लिए स्क्रिप्टिंग भाषा के लिए एलएलवीएम पीढ़ी को स्थापित करना अपेक्षाकृत आसान होगा जिसे तब परीक्षण इंजन में जोड़ा जा सकता है।
इस प्रकार लिंकिंग चरण दो दिशाओं में जाएगा, स्क्रिप्टिंग भाषा से परीक्षण इंजन ऑब्जेक्ट्स में मूल्य निर्धारण जानकारी प्राप्त करने और राज्य की जानकारी की जांच करने के लिए कॉल करें और कुछ विशेष सी ++ ऑब्जेक्ट्स के तरीकों के परीक्षण इंजन से कॉल करें जहां कोड प्रदान किया गया था सी ++ से नहीं बल्कि पटकथा भाषा से।
सारांश में:
1) मैं JIT संकलन, कोड पीढ़ी की प्रक्रिया के हिस्से के रूप में precompiled (या तो .bc, ओ, या ए) फ़ाइलों में लिंक कर सकते हैं?
2) मैं इस तरह से है कि मैं कोड के रूप में अगर यह सब सी ++ में लिखा गया था में कार्य करता है कि बनाने के लिए कर रहा हूँ में ऊपर 1 में प्रक्रिया का उपयोग कर) कोड में लिंक कर सकते हैं?
आपकी मदद के लिए धन्यवाद। मैं इसे देख लूंगा। – inflector