असेंबली का उपयोग करके __mm_add_epi32_inplace_purego को अनुकूलित करना
यह प्रश्न __mm_add_epi32_inplace_purego फ़ंक्शन के आंतरिक लूप को अनुकूलित करना चाहता है, जो बाइट्स की एक सरणी पर एक स्थितिगत जनसंख्या गणना करता है। लक्ष्य असेंबली निर्देशों का उपयोग करके प्रदर्शन में सुधार करना है। किसी सरणी तत्व का पता पास करने के लिए '&counts[i]' का उपयोग अक्षम हो सकता है। इसे अनुकूलित करने के लिए, हम पॉइंटर को इसके बजाय पूरे ऐरे में पास कर सकते हैं:
__mm_add_epi32_inplace_inplace_purego(गिनती है, विस्तार करें)
__mm_add_epi32_inplace_purego(&counts[i], expand)
इसके अतिरिक्त, असेंबली निर्देशों का उपयोग करके आंतरिक लूप को और अधिक अनुकूलित किया जा सकता है। निम्नलिखित असेंबली कोड असेंबली में लागू __mm_add_epi32_inplace_purego का एक संस्करण है:
__mm_add_epi32_inplace_inplace_purego(counts, expand)
यह असेंबली कोड 'गिनती' और 'विस्तार' के तत्वों को रजिस्टरों में लोड करता है, जोड़ करता है, और परिणाम को वापस 'गिनती' में संग्रहीत करता है। सरणियों को तर्कों के रूप में पारित करने की आवश्यकता से बचकर और कुशल असेंबली निर्देशों का उपयोग करके, यह कोड आंतरिक लूप के प्रदर्शन में काफी सुधार करता है।
संक्षेप में, किसी तत्व के पते के बजाय सूचक को सरणी में पास करके और असेंबली में आंतरिक लूप को लागू करके, __mm_add_epi32_inplace_purego फ़ंक्शन को स्थितीय जनसंख्या गणना संचालन में बेहतर प्रदर्शन प्राप्त करने के लिए अनुकूलित किया जा सकता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3