मेरे पास कक्षा X का कार्यान्वयन है, जिसमें दो पॉइंटर्स जानकारी के दो टुकड़े हैं। मैंने एक नया कार्यान्वयन लिखा है, कक्षा वाई, जिसमें एक संरचना के लिए केवल एक सूचक है जिसमें निकटतम सदस्यों के साथ जानकारी के दो टुकड़े शामिल हैं। एक्स और वाई के तरीकों को आम तौर पर केवल जानकारी के टुकड़ों में से एक को छेड़छाड़ करने की आवश्यकता होती है, लेकिन एक प्राप्त() विधि प्रदान करती है जो दूसरे टुकड़े को पॉइंटर लौटाती है (इस मामले में कक्षा एक्स केवल उस टुकड़े को अपने सूचक को लौटाता है और कक्षा वाई पता देता है संरचना के दूसरे सदस्य का)। सामान्य उपयोग में, एक्स और वाई के तरीकों पर कॉल() प्राप्त करने के लिए कॉल द्वारा छेड़छाड़ की जाएगी और उस दूसरे टुकड़े पर काम कर रहे हैं।सी ++, कैश इलाके में बेंचमार्क सुधार के तरीके?
मुझे उम्मीद है कि वास्तविक जीवन परिस्थितियों में प्रदर्शन में सुधार होना चाहिए, अब कक्षा के कार्यान्वयन में स्मृति के दो टुकड़े स्मृति में एक दूसरे के बगल में हैं (क्योंकि वे एक संरचना के निकट सदस्य हैं), लेकिन मैं मैं अपने द्वारा लिखे गए बेंचमार्क में कोई अंतर नहीं देख रहा हूं (बड़े लूप में अपने दूसरे टुकड़ों पर काम करने के साथ एक्स और वाई के तरीकों को कॉल करने में मदद करता हूं)। मुझे संदेह है क्योंकि यह सब कुछ मेरे परीक्षण में किसी भी मामले में कैश में फिट बैठता है। मैं अभी तक अपने असली ऐप में यह कोशिश नहीं करना चाहता क्योंकि एक्स और वाई के अर्थशास्त्र अन्य सूक्ष्म तरीकों से भिन्न हैं जो इस अनुकूलन से संबंधित नहीं हैं और उपयोग करने वाले एप्लिकेशन को पोर्ट करना कुछ काम होगा, और इन मानकों को ऐसा करने के औचित्य में मदद करने के लिए माना जाता है पहली जगह में काम करते हैं।
बेहतर कैश इलाके के कारण प्रदर्शन में अंतर का निरीक्षण करने का सबसे अच्छा तरीका क्या है? यदि मैं कॉल के बीच कैश के आकार के बराबर एक सरणी पर डमी काम का गुच्छा करता हूं तो वह पर्याप्त है? या क्या मैं कैश आकार से थोड़ा कम सरणी पर काम करना चाहता हूं, ताकि मेरी कक्षा के मेरे उदाहरणों पर काम करने से चीज़ें कैश में और बाहर आ जाएंगी? मुझे यकीन नहीं है कि कंपाइलर अनुकूलन और विभिन्न कैश आकारों के खिलाफ मजबूत कुछ कैसे कोड करें।
'क्यों' वास्तव में यहां मुद्दा नहीं है - प्रश्न कैश इलाके बेंचमार्क के लिए स्पष्ट रूप से स्पष्ट है। मुझे नहीं लगता कि 'क्यों' वास्तव में चर्चा में कुछ भी जोड़ता है, और यह मानने के लिए सबसे अच्छा है कि यूसुफ जानता है कि वह क्या कर रहा है। – Justicle
कम से कम IMHO "क्यों" हमेशा महत्वपूर्ण है। "मैं उम्मीद करता हूं कि वास्तविक जीवन स्थितियों में प्रदर्शन में सुधार होना चाहिए" जो मुझे बताता है कि यूसुफ चीजों को गति देने की तलाश में है। "मैं अभी तक अपने असली ऐप में यह कोशिश नहीं करना चाहता हूं" जो इससे भी ज्यादा सुझाव देता है कि उसका अंतिम लक्ष्य बेहतर प्रदर्शन है, और वह बेहतर इलाके के माध्यम से इसके बारे में जाने की कोशिश कर रहा है - यही कारण है कि मैंने बेहतर प्रदर्शन के लिए अन्य पाठ्यक्रमों की सिफारिश की। हालांकि, @ जोसेफ, अगर मैं यहां गलत दिशा में गया, तो कृपया उपेक्षा करें। ;-) [और उस स्थिति में, कैशग्रींड वह है जो आप चाहते हैं] –
मैं एक स्मार्ट पॉइंटर क्लास लिख रहा हूं जो मूल रूप से एल्गोरिदम-कम है। मैंने इसे जी-प्रोफेसर के साथ उस बिंदु तक अनुकूलित किया है जहां ऐसी चीजें हैं जैसे शाखा मौजूद है (एक अगर) या एक नकली पूर्णांक असाइनमेंट यह निर्धारित कर सकता है कि मेरी कक्षा पुराने कार्यान्वयन को धड़कता है या नहीं। यह उन कुछ मामलों में से एक है जहां सूक्ष्म अनुकूलन निश्चित रूप से लागू होते हैं;) –