Saya telah mencoba untuk mengoptimalkan beberapa kode yang sangat kritis terhadap kinerja (algoritma pengurutan cepat yang disebut jutaan dan jutaan kali di dalam simulasi monte carlo) dengan membuka gulungan berulang. Inilah loop dalam yang saya coba percepat:
// Search for elements to swap.
while(myArray[++index1] < pivot) {}
while(pivot < myArray[--index2]) {}
Saya mencoba membuka gulungan ke sesuatu seperti:
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
}
Ini sama sekali tidak membuat perbedaan jadi saya mengubahnya kembali ke bentuk yang lebih mudah dibaca. Saya memiliki pengalaman serupa di lain waktu saya mencoba membuka gulungan loop. Mengingat kualitas prediktor cabang pada perangkat keras modern, kapan, jika pernah, apakah pembukaan gulungan masih merupakan pengoptimalan yang berguna?