मैं (हां!) सी # में कुछ बहुत गणना-गहन कोड पर काम कर रहा हूं।
मैं ऑप्टिकल मॉडलिंग के लिए FDTD के GPGPU कार्यान्वयन का निर्माण कर रहा हूं । एक छोटे (128 प्रोसेसर) क्लस्टर पर, हमारे कई सिमुलेशन चलाने में कई सप्ताह लगते हैं। हालाँकि, GPU कार्यान्वयन, लगभग 50x तेज़ी से चलने के लिए करते हैं - और यह उपभोक्ता-ग्रेड NVidia कार्ड पर है। अब हमारे पास दो GTX295 दोहरे प्रोसेसर कार्ड (कई सौ कोर) के साथ एक सर्वर है, और जल्द ही कुछ टेस्ला प्राप्त कर रहे हैं।
यह आपकी भाषा से कैसे संबंधित है? सीपीयू-बाउंड से पहले हम जिस C ++ FDTD कोड का उपयोग कर रहे थे, उसी तरह से, ये GPU-बाध्य हैं, इसलिए प्रबंधित बनाम देशी कोड का ( बहुत छोटा) हॉर्स पावर अंतर कभी भी खेलने में नहीं आता है। C # ऐप एक कंडक्टर के रूप में कार्य करता है - ओपनसीएल कर्नेल लोड करना, जीपीयू से डेटा पास करना, उपयोगकर्ता इंटरफ़ेस प्रदान करना, रिपोर्टिंग करना, आदि - सभी कार्य जो सी ++ में गधे में दर्द हैं।
पिछले वर्षों में, प्रबंधित और अप्रबंधित कोड के बीच प्रदर्शन अंतर काफी महत्वपूर्ण था कि यह कभी-कभी C ++ के भयानक ऑब्जेक्ट मॉडल के साथ अतिरिक्त कुछ प्रतिशत गति प्राप्त करने के लिए लायक था। इन दिनों, C ++ बनाम C # की विकास लागत सबसे अनुप्रयोगों के लिए लाभ को बढ़ा देती है।
इसके अलावा, आपके अधिकांश प्रदर्शन अंतर भाषा की पसंद से नहीं, बल्कि आपके डेवलपर के कौशल से आने वाले हैं। कुछ हफ़्ते पहले, मैंने ट्रिपल-नेस्टेड (3 डी सरणी ट्रैवर्सल) लूप के अंदर से एक एकल डिवीजन ऑपरेशन को स्थानांतरित किया, जिसने किसी दिए गए कम्प्यूटेशनल डोमेन के लिए निष्पादन का समय 15% कम कर दिया। यह प्रोसेसर वास्तुकला का एक परिणाम है: विभाजन धीमा है, जो उन चेहरों में से एक है जिन्हें आपको बस कहीं और लेने की आवश्यकता है।