2011-01-22 11 views
5

So che alcune CPU tentano di prevedere le istruzioni di diramazione quando decidono quale codice prelampare, mi chiedevo se c'era un modo per aiutare o codificare le predizioni di ramo in C# (o C++). Un esempio potrebbe essere un errore nel verificare se un'istruzione che so restituirà il 99,9999999% di volte false, vorrei dire alla CPU di aspettarsi sempre che il ramo non accada mai per scopi di prelettura.Conoscenza degli esperti di distribuzione per la previsione delle dichiarazioni di ramo in C# o C++

Grazie.

+0

Perché ti senti questo è necessario? –

+3

oggi in micro-ottimizzazione impazzito ci presentiamo .. – BrokenGlass

+0

@chibacity alcune volte potrebbe essere molto importante e dare qualche incremento di prestazioni. Ma la maggior parte delle nuove CPU ha predittori di ramo piuttosto buoni con una grande cache di cronologia. – Elalfer

risposta

5

In base alle mie conoscenze, non esiste una soluzione multipiattaforma a questo problema. Mi aspetto che C# VM faccia una specie di analisi runtime per ottimizzare questo tipo di previsioni, anche se non lo so per certo.

Per C/C++, sono disponibili alcuni strumenti specifici della piattaforma per ottimizzarlo. Di solito è possibile trovare gli ottimizzatori guidati dal profilo per il codice. So per certo che gcc e g ++ supportano questo e che può fare una grande differenza nelle prestazioni del programma netto. gcc supporta anche un'estensione specifica compilatore chiamato __builtin_expect che consente di hardcode nelle vostre ipotesi su branch prediction:

if (__builtin_expect(x == 0, 0)) { // Unlikely to occur 
    /* ... */ 
} 
+0

Questa domanda descrive come eseguire le ottimizzazioni guidate dai profili con g ++: http://stackoverflow.com/ domande/4365980/ottimizzazioni-in-g how-to-use-profilo-guidate- – JaredC

Problemi correlati