Di dunia saat ini, tidak masalah, jika tidak ada sama sekali.
Prediksi cabang dinamis (sesuatu yang dipikirkan selama beberapa dekade (lihat Analisis Skema Prediksi Cabang Dinamis Beban Kerja Sistem yang diterbitkan pada tahun 1996)) adalah tempat yang cukup umum.
Contohnya dapat ditemukan pada prosesor ARM. Dari Pusat Info Arm pada Prediksi Cabang
Untuk meningkatkan akurasi prediksi cabang, kombinasi teknik statis dan dinamis digunakan.
Pertanyaannya kemudian adalah "apa prediksi cabang dinamis di prosesor lengan?" Pembacaan berkelanjutan prediksi cabang dinamis menunjukkan bahwa ia menggunakan skema prediksi 2 bit (dijelaskan dalam makalah) membangun informasi tentang apakah cabang diambil dengan kuat atau lemah atau tidak diambil.
Seiring waktu (dan maksud saya beberapa melewati blok itu) ini membangun informasi ke mana kode akan pergi.
Untuk prediksi statis , ini terlihat pada cara kode terlihat dengan sendirinya dan ke arah mana cabang dibuat pada tes - untuk instruksi sebelumnya atau yang lebih jauh dalam kode:
Skema yang digunakan dalam prosesor ARM1136JF-S memprediksi bahwa semua cabang bersyarat ke depan tidak diambil dan semua cabang terbelakang diambil. Sekitar 65% dari semua cabang didahului oleh siklus non-cabang yang cukup untuk diprediksi sepenuhnya.
Seperti disebutkan oleh Sparky, ini didasarkan pada pemahaman bahwa loop lebih sering daripada tidak, loop. Cabang-cabang loop mundur (memiliki cabang di akhir loop untuk memulai kembali di atas) - biasanya melakukan ini.
Bahaya mencoba menebak kompiler adalah Anda tidak tahu bagaimana kode itu akan dikompilasi (dan dioptimalkan). Dan sebagian besar, itu tidak masalah. Dengan prediksi dinamis, dua kali melalui fungsi ini akan memprediksi melewatkan pernyataan penjaga untuk pengembalian prematur. Jika kinerja dua pipeline memerah adalah kinerja kritis, ada hal lain yang perlu dikhawatirkan.
Waktu yang diperlukan untuk membaca satu gaya di atas yang lain kemungkinan lebih penting - membuat kode menjadi bersih sehingga manusia dapat membacanya, karena kompiler akan melakukannya dengan baik tidak peduli seberapa berantakan atau ideal Anda menulis kode.