मैं कुछ अत्यंत प्रदर्शन-क्रिटिकल कोड (एक त्वरित सॉर्ट एल्गोरिथ्म जो लाखों और लाखों बार एक मोंटे कार्लो सिमुलेशन के अंदर कहा जा रहा है) को लूप अन्रॉलिंग द्वारा अनुकूलित करने की कोशिश कर रहा हूं। यहाँ मैं आंतरिक लूप की कोशिश कर रहा हूँ:
// Search for elements to swap.
while(myArray[++index1] < pivot) {}
while(pivot < myArray[--index2]) {}
मैंने कुछ करने की कोशिश की जैसे:
while(true) {
if(myArray[++index1] < pivot) break;
if(myArray[++index1] < pivot) break;
// More unrolling
}
while(true) {
if(pivot < myArray[--index2]) break;
if(pivot < myArray[--index2]) break;
// More unrolling
}
इससे बिल्कुल कोई फर्क नहीं पड़ा इसलिए मैंने इसे और अधिक पठनीय रूप में बदल दिया। मुझे अन्य बार भी इसी तरह के अनुभव हुए हैं मैंने लूप को अनियंत्रित करने की कोशिश की है। आधुनिक हार्डवेयर पर शाखा भविष्यवाणियों की गुणवत्ता को देखते हुए, यदि कभी, लूप अभी भी एक उपयोगी अनुकूलन को नियंत्रित कर रहा है?