Nel mondo di oggi, non importa molto, se non del tutto.
La previsione dinamica dei rami (qualcosa pensata per decenni (vedi Analisi dei piani di previsione dei rami dinamici sui carichi di lavoro del sistema pubblicati nel 1996) sono abbastanza comuni.
Un esempio di questo può essere trovato nel processore ARM. Dal Centro informazioni sul braccio su Branch Prediction
Per migliorare la precisione della previsione del ramo, viene utilizzata una combinazione di tecniche statiche e dinamiche.
La domanda allora è "che cos'è la predizione del ramo dinamico nel processore arm?" La lettura confinata della predizione del ramo dinamico mostra che utilizza uno schema di predizione a 2 bit (descritto nel documento) crea informazioni sul fatto che il ramo sia preso in modo forte o debole o non preso.
Nel tempo (e per tempo intendo alcuni passaggi attraverso quel blocco) questo crea informazioni su come andrà il codice.
Per la previsione statica , osserva l'aspetto del codice stesso e il modo in cui il ramo viene eseguito sul test - a un'istruzione precedente o a un'altra nel codice:
Lo schema utilizzato nel processore ARM1136JF-S prevede che tutti i rami condizionali in avanti non vengano presi e tutti i rami all'indietro. Circa il 65% di tutti i rami è preceduto da un numero sufficiente di cicli non derivati da essere completamente previsto.
Come accennato da Sparky, questo si basa sulla comprensione che i loop più spesso, loop. Il ciclo si dirama all'indietro (ha un ramo alla fine del ciclo per riavviarlo in alto) - normalmente lo fa.
Il pericolo di provare a indovinare il compilatore è che non sai come sarà effettivamente compilato (e ottimizzato) quel codice. E per la maggior parte, non importa. Con la previsione dinamica, due volte attraverso la funzione prevede un salto sull'istruzione guard per un ritorno prematuro. Se le prestazioni di due condutture scaricate hanno prestazioni critiche, ci sono altre cose di cui preoccuparsi.
Il tempo necessario per leggere uno stile rispetto all'altro è probabilmente di maggiore importanza: rendere il codice pulito in modo che un essere umano possa leggerlo, perché il compilatore andrà benissimo, non importa quanto disordinato o idealizzato si scriva il codice.