Menyesuaikan Ramalan Cawangan dengan GCC
Soalan: Bolehkah GCC diarahkan untuk memaksa hasil ramalan cawangan mengikut arah yang ditetapkan untuk Seni bina Intel?
Jawapan:
Ya, GCC menawarkan fungsi __builtin_expect untuk membimbing penjanaan kodnya untuk ramalan cawangan. Fungsi ini mengambil dua hujah: exp (ungkapan keadaan) dan c (hasil yang dijangkakan).
Untuk mengarahkan GCC meramalkan laluan cawangan tertentu secara konsisten sebagai benar, gunakan sintaks berikut:
<code class="c">if (__builtin_expect(exp, 1))</code>
Sebagai contoh, dalam coretan kod yang disediakan, anda boleh menambah:
<code class="c">if (__builtin_expect(normal, 1))</code>
Selain itu, untuk memudahkan sintaks, anda boleh menentukan makro tersuai:
<code class="c">#define likely(x) __builtin_expect (!!(x), 1) #define unlikely(x) __builtin_expect (!!(x), 0)</code>
Pertimbangan:
Atas ialah kandungan terperinci Bolehkah GCC Force Branch Prediction Outcomes pada Intel Architectures?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!