View Single Post
Old 31-12-2007, 14:21   #120
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6404
Quote:
Originariamente inviato da jappilas Guarda i messaggi
ad esempio i code path effettivamente attraversati in base alle condizioni di runtime (in presenza di branch condizionati ) - se nel mio codice vi fosse, per dire, una catena di if del tipo
Codice:
if ( variabile == valore1) 
   <istruzioni>
else if (variabile == valore2)
   <istruzioni>
   <...>
il primo controllo condizionale verrebbe eseguito anche quando variabile è uguale a valore2; e se durante l' esecuzione del programma fosse la seconda condizione verificata con più frequenza, e quindi preso il relativo branch, avrei una inefficienza (che con un compilatore statico non si avrebbe modo di rilevare se non con un profiling del codice compilato)
Questo non è vero perchè ci sono circuiti di branch-prediction nel processore, che evitano proprio questo. E non c'entra nulla con il linguaggio che si sta usando.

E visto che vi piace snocciolare link, ve ne snocciolo uno anch'io :

http://en.wikipedia.org/wiki/Branch_prediction

Quote:
Originariamente inviato da jappilas Guarda i messaggi
questo dipende dalle capacità del programmatore di ottimizzare il codice (assembly, perchè per sfruttare direttamente eventuali registri particolari a cui ti riferisci l' uso di linguaggi di più alto livello sarebbe praticamente fuori discussione) a mano e a mente
Non è necessario scendere fino all'assembly per fare le ottimizzazioni che dicevo sopra. Basta un buon profiler ed un pò di pazienza Inoltre spesso e volentieri, per abilitare particolari registri, è sufficiente impostare un flag specifico in fare di compilazione e ci pensa poi il compilatore a smistare il flusso di programma su quei registri.

Ultima modifica di Unrue : 31-12-2007 alle 14:51.
Unrue è offline   Rispondi citando il messaggio o parte di esso