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

Raspunde prin e-mail lui