शायद यह स्पष्ट उत्तर देने के लिए शायद सामान्य है। जावा की तुलना में सी या सी ++ में दृष्टिकोण काफी अलग होंगे (जिस तरह से भाषा वस्तुओं को अलग करती है)।
मूल होगा, डेटा रखें जो निकटतम लूपों में एक साथ पहुंच जाएगा। यदि आपका लूप टाइप टी पर काम करता है, और इसमें सदस्यों एम 1 है ... एमएन, लेकिन केवल एम 1 ... एम 4 महत्वपूर्ण पथ में उपयोग किया जाता है, टी 1 में टी को तोड़ने पर विचार करें जिसमें एम 1 ... एम 4 और टी 2 है जिसमें एम 4 शामिल है। ..mN। आप टी 1 को एक पॉइंटर में जोड़ना चाहते हैं जो टी 2 को संदर्भित करता है। कैश सीमाओं (बहुत प्लेटफॉर्म पर निर्भर) के संबंध में अनियंत्रित वस्तुओं से बचने का प्रयास करें।
संगत कंटेनर (सी में सादे पुरानी सरणी, सी ++ में वेक्टर) का उपयोग करें और पुनरावृत्तियों को ऊपर या नीचे जाने के लिए प्रबंधित करने का प्रयास करें, लेकिन सभी कंटेनर पर यादृच्छिक रूप से कूद नहीं है। सूची इलाके के लिए हत्यारे हैं, सूची में लगातार दो नोड्स पूरी तरह से अलग यादृच्छिक स्थानों पर हो सकते हैं।
जावा में ऑब्जेक्ट कंटेनर (और जेनेरिक) भी एक हत्यारा हैं, जबकि एक वेक्टर में संदर्भ सम्मिलित हैं, वास्तविक वस्तुएं नहीं हैं (संकेत का एक अतिरिक्त स्तर है)। जावा में बहुत सारे चर हैं (यदि आप new
दो ऑब्जेक्ट्स एक दूसरे के ठीक बाद एक हैं, तो ऑब्जेक्ट्स शायद लगभग संगत स्मृति स्थानों में होने लगेंगे, भले ही कुछ अतिरिक्त जानकारी (आमतौर पर दो या तीन पॉइंटर्स) हों जीसी के बीच ऑब्जेक्ट मैनेजमेंट डेटा ऑब्जेक्ट्स को चारों ओर ले जाएगा, लेकिन आशा है कि इससे पहले की तुलना में चीजें ज्यादा खराब नहीं होंगी।
यदि आप जावा में फोकस कर रहे हैं, तो कॉम्पैक्ट डेटा स्ट्रक्चर बनाएं, अगर आपके पास कोई ऑब्जेक्ट है एक स्थिति है, और इसे एक तंग लूप में एक्सेस किया जाना है, x
और y
Point
बनाने के बजाय अपने ऑब्जेक्ट के अंदर आदिम प्रकारों को रखने पर विचार करें और इसका संदर्भ रखें। संदर्भ प्रकारों को नया होना आवश्यक है, और इसका मतलब है कि एक अलग आवंटन, एक अतिरिक्त संकेत और कम इलाके।
स्रोत
2012-03-22 12:16:00
इस भाषा स्वतंत्र प्रश्न [देखें नियंत्रित करने के लिए कैसे एक लिखने कोड है कि सबसे अच्छा प्रदर्शन में सुधार के लिए सीपीयू कैश का उपयोग करता है] (http://stackoverflow.com/questions/763262/how-does-one-write-code-that-best-utilizes-the-cpu-cache-to-improve-performance) –
आप इसे दो तरफ से देख सकते हैं: स्मृति में डेटा को शफल करना एक दृष्टिकोण है, समय पर प्रसंस्करण को झुकाव एक और है। – MSalters
@MSalters, लेकिन रैम में 0.5 एमबी डेटा डालने से यह गारंटी नहीं है कि यह कैश में एक ही समय में है? – mezamorphic