मैन्युअल रूप से अनचाहे लूप नए प्रोसेसर पर अक्षम हो सकते हैं लेकिन वे अभी भी जीपीयू और हल्के आर्किटेक्चर जैसे एआरएम पर उपयोगी हो सकते हैं क्योंकि वे वर्तमान पीढ़ी के सीपीयू प्रोसेसर की भविष्यवाणी के मुकाबले उतने अच्छे नहीं हैं और क्योंकि परीक्षण और कूद वास्तव में उन पर चक्र बर्बाद करते हैं प्रोसेसर।
यह कहा गया है, यह केवल बहुत तंग लूप और ब्लॉक में किया जाना चाहिए, क्योंकि अनलॉक करके आप कोड आकार को काफी हद तक फहराते हैं और यह छोटे उपकरणों पर कैश को उड़ा देगा और आप अपने पर सबसे बुरी समस्या का सामना करेंगे हाथ।
चेतावनी का एक नोट हालांकि, एक लूप को अनलॉक करना अनुकूलित करते समय अंतिम उपाय होना चाहिए। यह आपके कोड को उस स्तर पर बदल देता है जो इसे अनजान बनाता है और इसे पढ़ने वाला कोई व्यक्ति आपको और आपके परिवार को बाद में स्नैप कर सकता है। यह जानकर, इसे लायक बनाएं :)
मैक्रोज़ का उपयोग कोड को और अधिक पठनीय बनाने में बहुत मदद कर सकता है और यह अनियंत्रित अनियंत्रित कर देगा।
उदाहरण: एक असंबंधित नोट पर
#define UNROLL (i) \
a+=(ptr[i]) << 8; \
a-=(ptr[i-k]) << 8;
for(int i=0; i<32; i++)
{
UNROLL(i);
UNROLL(i+1);
UNROLL(i+2);
UNROLL(i+3);
UNROLL(i+4);
UNROLL(i+5);
UNROLL(i+6);
UNROLL(i+7);
}
लेकिन अभी भी कुछ हद तक संबंधित, यदि आप वास्तव में गिनती निर्देश तरफ जीतना चाहते हैं, सुनिश्चित करें कि सभी स्थिरांक प्राप्त करते हैं:
for(int i=0; i<256; i++)
{
a+=(ptr + i) << 8;
a-=(ptr + i - k) << 8;
// And possibly some more
}
को उतारना कर सकते हैं आपके कोड में जितना संभव हो उतना कम से कम एकीकृत करें ताकि आप निम्नलिखित असेंबली के साथ समाप्त न हों:
// Bad
MOV r1, 4
// ...
ADD r2, r2, 1
// ...
ADD r2, r2, 4
बजाय:
// Better
ADD r2, r2, 8
आमतौर पर, गंभीर compilers आप चीजों को इस तरह का के खिलाफ की रक्षा, लेकिन सभी इच्छा। उन '#define', 'enum' और 'static const' को आसान रखें, सभी कंपाइलर स्थानीय 'कॉन्स्ट' चर को अनुकूलित नहीं करेंगे।
मैं डफ्स डिवाइस के लिए उल्लेखनीय शब्द का उपयोग करूंगा ;-)। –
जो एक उपयुक्त शब्द भी होगा हाँ :-) –
चालाक होने पर, मुझे लगता है कि डफ का डिवाइस खराब कोड निर्माण है।स्विच स्टेटमेंट के सापेक्ष अपनी संरचना का कोई वास्तविक गति लाभ नहीं है। लगातार दो लूप, एक अनियंत्रित और दूसरा राउंड ऑफ को संभालने के लिए नहीं है और अधिक स्पष्ट है और सी –