2010-12-06 12 views
9

सुप्रभात,सी ++/सीएलआई प्रदर्शन?

मैं एक वर्तनी परीक्षक लिख रहा हूं, जो मामले के लिए प्रदर्शन-महत्वपूर्ण है। यह है, और चूंकि मैं डीबी से कनेक्ट करने और सी # का उपयोग करके जीयूआई बनाने की योजना बना रहा हूं, इसलिए मैंने सी में एक संपादन-दूरी गणना दिनचर्या लिखी और एक डीएलएल में संकलित किया जिसे मैं DllImport का उपयोग कर सी # में उपयोग करता हूं। समस्या यह है कि मुझे लगता है कि (हालांकि मैं संभवतः गलत हूं) कि String से char * से एक-एक करके शब्दों को मार्शल करना बहुत अधिक ओवरहेड का कारण बन रहा है। यही कारण है कि मैंने सी ++/सीएलआई का उपयोग करने के बारे में सोचा था ताकि मैं String के साथ सीधे .NET में टाइप कर सकूं ... मेरा सवाल यह है कि सी ++/सीएलआई प्रदर्शन भारी गणितीय गणनाओं और सरणी पहुंच के लिए मूल सी कोड से कैसे तुलना करता है?

बहुत बहुत धन्यवाद।

+0

मुझे लगता है, सीआईएल वही करता है लेकिन निस्संदेह। –

+0

आप एक-एक करके शब्दों को क्यों पार करते हैं? पूरे txt पास करें। –

उत्तर

4

सी ++/सीएलआई को कुछ प्रकार की मार्शलिंग भी करना होगा।

सभी प्रदर्शन संबंधी समस्याओं की तरह, आपको माप और अनुकूलित करना चाहिए। क्या आप निश्चित हैं कि सी # आपके उद्देश्यों के लिए पर्याप्त तेज़ नहीं होगा? जेआईटी कंपाइलर करने वाले अनुकूलन को कम मत समझें। कोशिश किए बिना प्रबंधित होने के लिए पूरी तरह से एक भाषा कार्यान्वयन के ऊपरी हिस्से पर अनुमान लगाएं। यदि यह पर्याप्त नहीं है, तो क्या आपने अप्रबंधित कोड को आजमाने से पहले असुरक्षित सी # कोड (पॉइंटर्स के साथ) माना है?

सी ++/सीएलआई की प्रदर्शन प्रोफ़ाइल के संबंध में, यह वास्तव में इसका उपयोग करने के तरीके पर निर्भर करता है। यदि आप प्रबंधित कोड (सीआईएल) (/clr:pure) के साथ संकलित करते हैं, तो यह सी # से बहुत अलग नहीं होगा। सी ++/सीएलआई में मूल सी ++ कार्यों में सादे सी ++ के समान प्रदर्शन विशेषताएं होंगी। देशी सी ++ और सीएलआई पर्यावरण के बीच वस्तुओं को पास करने से कुछ ओवरहेड होगा।

+0

असुरक्षित सी # कोड सी फंक्शन के रूप में धीमा है जितना मैं डीएलआईपोर्ट के साथ आयात कर रहा हूं। – Miguel

1

मुझे उम्मीद नहीं होगी कि बाधा DLLImport के साथ होगी।
मैंने ऐसे कार्यक्रम लिखे हैं जो DLLImport को प्रति सेकंड कई हंडर्ट बार कहते हैं और यह ठीक काम करता है।
आप एक छोटे से प्रदर्शन ठीक भुगतान करेंगे, लेकिन जुर्माना छोटा है।

1

आपको यह नहीं मानते कि आपको अनुकूलित करने की क्या ज़रूरत है। नमूना देने के लिए आपको बताएं।

मैंने कुछ वर्तनी-सुधारक किए हैं, और जिस तरह से मैंने इसे किया है (outlined here) शब्दकोश को स्मृति में एक त्रिभुज के रूप में व्यवस्थित करना था, और उस पर खोज करना था। यदि शब्दों की संख्या बड़ी है, तो सामान्य प्रत्यय साझा करके त्रिभुज का आकार बहुत कम किया जा सकता है।

+0

यह मामला नहीं है ... मैं वास्तव में बीके-ट्री का उपयोग कर रहा हूं, इसलिए मेरा दृष्टिकोण आपके द्वारा काफी अलग है। – Miguel

+0

@ मिगुएल: ठीक है, ठीक है। किसी भी मामले में, मैंने जो किया वह त्रिभुज में एक शाखा-बाध्य खोज था, जिसने बहुत अच्छी तरह से काम किया। एक विकल्प मिश्रित गहराई-प्रथम/चौड़ाई-पहले होता है, लेकिन मैंने सोचा कि शाखा-और-बाउंड एक ही प्रदर्शन के बारे में था और यह अधिक लचीला था, जिस तरह से गलत वर्तनी हो सकती है। –

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