मुझे समझ में नहीं आता कि सी #/.NET (और यहां तक कि जावा) में मैट्रिक्स गुणा को इतना धीमा कर देता है।.NET में मैट्रिक्स गुणा क्यों धीमा है?
इस बेंचमार्क (
source) पर एक नज़र डालें:
एक अद्यतन बेंचमार्क खोजने का प्रयास कर रहा है।
Java vs C# vs C++ breakdown http://img411.imageshack.us/img411/9324/perf.gif
सी # के पूर्णांक और डबल प्रदर्शन लानत सी ++ के करीब MSVC साथ ++ संकलित है। डबल-फास्ट के रूप में 87% और 32-बिट पूर्णांक के लिए तेज़ 99%। बहुत अच्छा अच्छा, मैं कहूंगा। लेकिन फिर मैट्रिक्स गुणा देखें। अंतराल सी # के रूप में तेजी से 1 9% तक बढ़ता है। यह एक बहुत बड़ी विसंगति है जिसे मैं समझ नहीं पा रहा हूं। मैट्रिक्स गुणा सरल गणित का एक गुच्छा है। यह कितना धीमा हो रहा है? क्या यह मोटे तौर पर तेज़ फ्लोटिंग पॉइंट या पूर्णांक ऑपरेशंस की समतुल्य संख्या के रूप में नहीं होना चाहिए?
यह विशेष रूप से गेम और एक्सएनए के साथ चिंता का विषय है, जहां भौतिकी इंजन जैसी चीजों के लिए मैट्रिक्स और वेक्टर प्रदर्शन महत्वपूर्ण हैं। कुछ समय पहले, मोनो ने कुछ निफ्टी वेक्टर और मैट्रिक्स कक्षाओं के माध्यम से सिम निर्देशों के लिए समर्थन जोड़ा। यह अंतराल को बंद कर देता है और मोनो को हाथ से लिखे गए सी ++ से तेज़ बनाता है, हालांकि सिम के साथ सी ++ जितना तेज नहीं होता है। (source)
Matrix multiplication comparison http://img237.imageshack.us/img237/2788/resultse.png
यहाँ क्या हो रहा है?
संपादित करें: करीब देखकर, मैंने दूसरे ग्राफ को गलत तरीके से पढ़ा। सी # बहुत करीब आता है।
क्या पहला बेंचमार्क बस कुछ गलत कर रहा है?
क्षमा करें, मुझे पहले बेंचमार्क पर संस्करण संख्या याद आई। मैंने इसे "सी # रैखिक बीजगणित धीमा" के लिए एक आसान संदर्भ के रूप में पकड़ लिया है जिसे मैंने हमेशा सुना है। मैं एक और खोजने की कोशिश करूंगा।
सी # संस्करण + विकल्प: नेट फ्रेमवर्क 1.1.4322 उह ... क्या कोई नया संस्करण नहीं है? – GalacticJello
* बैठता है और यह देखने के लिए इंतजार कर रहा है कि जोन्सकेट को इस मामले पर क्या कहना है * :-) – WestDiscGolf
परीक्षण वीएस 2003 के साथ किया गया था। (सी ++ संस्करण भी ध्यान दें।) इसलिए .NET का प्राचीन संस्करण। – cHao