Salutare,
Dupa mai multe sapaturi google+documentatie gcc fara cine stie ce
rezultate, sper sa fie cineva pe aici care sa-mi dea un hint. Pe scurt,
problema se pune la modul urmator: pentru anumite if-uri vreau (in
scopul optimizarii) sa setez manual probabilitatea unei ramuri de a fi
executata (practic vreau ca branch predictor-ul CPU-ului - P4 - sa fie
static). Am gasit in gcc o functie __builtin_expect() care se presupune
ca ar trebui sa faca exact chestia asta, dar se pare ca este folosita
mai mult ca un hint de catre compilator. Exemplu:
|| for(i=0;i<n;i++)
if(__builtin_expect(a[i]<param,0) )
j++;
else
j--;
Codul de mai sus ar trebui sa creasca cu valoarea lui param, ceea ce nu
e cazul (da valori mari pentru param in mijlocul intervalului din care
valorile vectorului a sunt luate si mici la extreme). Any ideas
(eventual alte compilatoare, poate kernel patch-uri sau alte minuatii).
Multumiri anticipate,
Gabi Moruz
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug