Quote:
Originariamente inviato da jappilas
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
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.