Pengoptimuman Ramalan Cawangan dalam GCC
Seni bina Intel menyediakan mekanisme untuk mempengaruhi ramalan cawangan dalam kod yang dijana. Dengan fungsi __builtin_expect(), GCC boleh memaksa ramalan cawangan mengikut cara tertentu.
Sintaks untuk __builtin_expect() ialah:
long __builtin_expect (long exp, long c)
di mana:
Contohnya, untuk memaksa ramalan cawangan untuk sentiasa mengambil cawangan "benar" dalam kod C berikut:
if (normal) { doSomethingNormal(); } else { exceptionalCase(); }
Anda akan menggunakan pernyataan berikut:
if (__builtin_expect(normal, 1))
Untuk memudahkan penggunaan, adalah perkara biasa untuk mentakrifkan makro:
#define likely(x) __builtin_expect (!!(x), 1) #define unlikely(x) __builtin_expect (!!(x), 0)
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa:
Atas ialah kandungan terperinci Bagaimana untuk Meningkatkan Pengoptimuman Ramalan Cawangan dalam GCC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!