mercoledì 26 gennaio 2011

Bufala sugli interpreti (1)

Se chiediamo  al 99% degli operatori IT la differenza tra compilatori ed interpreti, l'accento sara' sicuramente sulla differenza prestazionale.
Ancora oggi sento (e leggo) che c'e' un fattore 10 nei tempi di esecuzione a favore dei compilati.

Purtroppo (anzi, fortunatamente) e' una bufala.

L'interpretazione preistorica funzionava in questo modo:
traduzione linea di codice
esecuzione linea
traduzione linea di codice
esecuzione linea
...
Nei compilati, invece, l'esecuzione puo' procedere senza interruzioni da parte di traduzioni:
esecuzione linea
esecuzione linea
...
poiche' la fase di traduzione e' effettuata (manualmente) prima dell'esecuzione.

In quell'era informatica, la differenza prestazionale nell'esecuzione tra i compilati e gli interpretati era notevole.

Ma poi i tempi sono cambiati!!

Successivamente, si sono fatti passi avanti dal punto di vista prestazionale nei meccanismi degli interpreti. Sintetizzando al massimo, una delle tecniche prevede la produzione di bytecode, il quale puo' essere direttamente eseguito. Dal punto di vista schematico, il processo e' simile ai linguaggi compilati, quindi in questo caso lo script e' tradotto con produzione di bytecode (una volta), ed esecuzione del bytecode (quante volte si vuole).

Lo stato dell'arte e' la just-in-time compilation, anche conosciuta come dynamic translation, che consiste in un approccio ibrido, idealmente suddivisa in 3 step:
  • traduzione continua;
  • riempimento di una cache con il tradotto;
  • esecuzione del tradotto.
La degradazione della performance e' fortemente ridotta poiche' il processo di traduzione produce continuamente del codice che e' inserito in un buffer, e questo a sua volta permette un processo continuo di esecuzione.
Esistono altre varianti, in particolare cito il pre-compiling. Tale tecnica dell'interprete prevede a run-time:
  • il processo di compilazione del sorgente (in memoria);
  • al termine dello step precedente, l'esecuzione del compilato.
Alla prossima puntata per qualche esempio comparativo.

Nessun commento:

Posta un commento