2010-10-05 13 views
5

मैं अपनी खुद की सिग्नल प्रोसेसिंग लाइब्रेरी बनाना चाहता हूं, और संभावित रूप से ग्राफ़ एल्गोरिदम के बारे में एक और बनाना चाहता हूं। मुझे स्मृति आवंटन, पॉइंटर्स, थ्रेडिंग इत्यादि से जुड़े संभावित बग के संबंध में सी # बहुत उपयोगी और मजबूत लगता है ...सिग्नल प्रोसेसिंग: सी ++ बनाम सी #

लेकिन मैं सोच रहा था कि प्रदर्शन के संदर्भ में मैं कितना खोने जा रहा हूं। क्या यह कुछ स्वीकार्य होगा?

धन्यवाद

उत्तर

6

जब मैंने अपना डीएसआईपी कोर्स शुरू किया तो मैं एक शुद्ध सी # डेवलपर था। थोड़ी देर के लिए चारों ओर देखने के बाद, मैं सी ++ पुस्तकालयों का उपयोग करके समाप्त हुआ और सी ++ सीख रहा था, जो अंत में मेरे लाभ के लिए था क्योंकि मैं रीयल-टाइम छवि प्रसंस्करण कर रहा था और सी # प्रदर्शन से मेल नहीं खा सकता है।

वास्तव में, आप एक त्वरित परीक्षण चला सकते हैं और गणितीय समीकरण चला सकते हैं जिसमें सी # और सी ++ में कुछ गुणा शामिल हैं और फ्लोटिंग पॉइंट नंबरों के साथ गणना करने वाले बड़े अंतर को देखते हैं।

यदि आप भाग्यशाली हैं, तो आपको सी # में रैपर मिलेंगे जो दोनों दुनिया के सर्वश्रेष्ठ, सी ++ में तेज गणना और सी # में उपयोग करने में आसान है। ओपनसीवी के लिए एक सी # रैपर है और यह काफी अच्छा लगता है (http://www.emgu.com/wiki/index.php/Main_Page)।

मैं अत्यधिक ओडीसीवी की सिफारिश करता हूं विशेष रूप से 2 डी सिग्नल प्रोसेसिंग के लिए। यह प्रदर्शन में बहुत अच्छा है और मेरी परियोजना को संभव बना दिया है। यहां डेमो पर एक नज़र डालें: http://www.youtube.com/watch?v=NeQvcdRPxoI और http://www.youtube.com/watch?v=NqYPJELHkhA

+0

रैपर पर अच्छी सोच +1 ... यह बहुत लंबा रहा है क्योंकि मैंने एक ऐसा उपयोग किया है जिसे मैं भूल जाता हूं कि वे मौजूद हैं। –

+0

सी ++ में सिग्नल प्रोसेसिंग के लिए कोई "डी फैक्टो" मानक है? – Bob

3

सही हार्डवेयर के साथ, आपको कोई समस्या नहीं होनी चाहिए।

हालांकि कुछ सोचने के लिए कुछ: मुझे सी ++ में सिग्नल प्रोसेसिंग करने के लिए लाइब्रेरी खोजने की कोशिश करने में कोई परेशानी नहीं है। हालांकि, सी # के लिए सिग्नल प्रोसेसिंग से निपटने में मुझे आसानी से ज्यादा जानकारी नहीं मिल सकती है।

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

बस कुछ सोचने के लिए। जब तक आप कुछ मिशन महत्वपूर्ण प्रणाली पर ऐसा नहीं कर रहे हैं, तो शायद यह किसी भी तरह से कोई फर्क नहीं पड़ता। मैं जो भी सोचता हूं उसके साथ जाऊंगा, आपको लंबी अवधि में और अधिक लाभ होगा।

+0

+1। "सी # -niche" पहलू पर विचार करने के लिए अच्छा जवाब – Aliostad

+0

+1। – Frank

+2

मुझे अक्सर यह टिप्पणी दिखाई देती है कि 'सही हार्डवेयर के साथ आपको कोई समस्या नहीं होनी चाहिए', जैसे कि सही हार्डवेयर के साथ कुछ प्रदर्शन करने के लिए एक प्रदर्शन दंड नहीं होना चाहिए। मैं इस से असहमत हूं क्योंकि पीसी खरीदने के लिए पैसे खर्च करते हैं, उन्हें बनाए रखते हैं, पर्याप्त स्मृति इत्यादि प्रदान करते हैं। तो इस वास्तविक दृष्टिकोण से: अक्षम भाषाओं और/या पुस्तकालयों के साथ काम करने के लिए पैसे खर्च करते हैं। क्यों कोई यह कहना चाहता है कि 'बेहतर हार्डवेयर' हल करता है, समस्या इस मामले के एल्गोरिदमिक पक्ष को नहीं देख रही है, और यही कारण है कि जब लोग प्रदर्शन के बारे में पूछते हैं तो अधिकांश लोग पूछते हैं। –

3

यह सी # में प्रदर्शन हानि के बारे में इतना नहीं है लेकिन कचरा संग्रह कब किया जाता है इसकी अप्रत्याशितता। जीसी के दौरान जीसी पूरा होने तक सभी प्रबंधित धागे जमे हुए होते हैं। उस समय के दौरान आप कोई प्रसंस्करण नहीं कर सकते, जो 99% अनुप्रयोगों के लिए कोई फर्क नहीं पड़ता, लेकिन सिग्नल प्रोसेसिंग के लिए महत्वपूर्ण है। यह है यानी आप डायरेक्टशो या अन्य "वास्तविक समय" सिग्नल प्रोसेसिंग अनुप्रयोगों के माइक्रोसॉफ्ट स्वीकृत प्रबंधित संस्करण को क्यों नहीं देखते हैं।

+0

कचरा कलेक्टर के समान, आप भविष्यवाणी नहीं कर सकते कि जब मॉलोक या नया फ्री चेन चलेंगे और स्मृति को समेकित करेगा। यदि आपको पूरी तरह से आवश्यकता हो तो जीसी चलाते समय आप नियंत्रित कर सकते हैं। –

+0

जीसी आमतौर पर केवल 20-30ms लेता है। तो यह एक समस्या नहीं होनी चाहिए। – Aliostad

+1

अंकुर: यह एक कारण है कि आप नियमित मॉलोक का उपयोग करने के बजाय स्मृति क्षेत्र/प्रीलाकेट क्यों उपयोग करेंगे, ताकि कोई मेरे दिमाग में गिनती न करे। – BrokenGlass

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