Bolehkah GCC Force Branch Prediction Outcomes pada Intel Architectures?

DDD
Lepaskan: 2024-10-24 07:12:01
asal
313 orang telah melayarinya

Can GCC Force Branch Prediction Outcomes on Intel Architectures?

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>
Salin selepas log masuk

Sebagai contoh, dalam coretan kod yang disediakan, anda boleh menambah:

<code class="c">if (__builtin_expect(normal, 1))</code>
Salin selepas log masuk

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>
Salin selepas log masuk

Pertimbangan:

  • __builtin_expect bukan ciri standard.
  • Peramal cawangan dan CPU pada umumnya mahir dalam membuat keputusan. Teknik ini harus dipertimbangkan hanya dalam senario yang sangat sensitif terhadap prestasi.

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!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!