.NET ढांचे के गणित कार्य अधिकतर डबल परिशुद्धता फ्लोट पर काम करते हैं, कोई भी सटीक (फ्लोट) अधिभार नहीं होता है। उच्च प्रदर्शन परिदृश्य में एकल परिशुद्धता डेटा के साथ काम करते समय इसके परिणामस्वरूप अनावश्यक कास्टिंग और आवश्यक परिस्थितियों के साथ अधिक परिशुद्धता वाले कार्यों की गणना भी होती है, इस प्रकार प्रदर्शन कुछ डिग्री से प्रभावित होता है।.NET में सिंगल प्रेसिजन मैथ ऑपरेशंस?
क्या इस अतिरिक्त सीपीयू ओवरहेड से बचने का कोई तरीका है? जैसे क्या फ्लोट ओवरलोड के साथ एक ओपन सोर्स गणित लाइब्रेरी है जो अंतर्निहित एफपीयू निर्देशों को सीधे कॉल करती है? (मेरी समझ यह है कि इसे सीएलआर में समर्थन की आवश्यकता होगी)। और वास्तव में मुझे यकीन नहीं है कि आधुनिक CPUs में भी एक सटीक निर्देश हैं।
यह सवाल आंशिक रूप से एक अवग्रह समारोह के अनुकूलन के बारे इस सवाल से प्रेरित है:
जब आप instrinsics को संदर्भित करते हैं तो यह बाहरी कार्यों के समान होता है? - इस तरह गणित कार्यों को लागू किया जाता है, बनाम अंतर्निहित भाषा में परिभाषित किया जाता है। AFAIK सीएलआर को लागू करने के लिए आसानी से बढ़ाया जा सकता है उदा। डबल सटीक संस्करण के अलावा सार्वजनिक स्थैतिक बाहरी डबल पाप (फ्लोट ए)। – redcalx
क्या आप इसे मूल कोड में लागू करने के बारे में बात कर रहे हैं? पी/एक फ्लोटिंग प्वाइंट ऑपरेशन के लिए ऐसा करने के लिए ओवरहेड का आह्वान 'पाप (डबल)' के साथ काम करने के प्रदर्शन प्रभाव से बचने के लिए पूरी तरह से अस्वीकार कर देगा। इंट्रिनिक्स को 'बाहरी' घोषित किया जाता है लेकिन पी/इनवोक नहीं होते हैं - उनके लिए मूल कोड आंतरिक रूप से जेआईटी द्वारा उन्हें जितना संभव हो सके उतना कुशल बनाने के लिए संभाला जाता है। –
तो शायद कुछ प्रदर्शन प्राप्त किया जा सकता है यदि आपका एल्गोरिदम ऐसा था कि आप एक एकल पी/Invoke कर सकते हैं जो कई फ्लोट ऑपरेशंस करता है। – Fantius