[zxspectrum] Re: Quel brav'uomo del dottor Kendall...

  • From: Luca Bisti <lucbisti@xxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 25 Jan 2005 11:35:06 +0100

Ciao Enrico!

Purtroppo in situazioni cosi' semplici il compilatore effettua delle ottimizzazioni ad hoc e quindi vanifica lo scopo del test. All'inizio ci siamo cascati pure noi, poi ci siamo subito resi conto che aggiungendo appena qualche riga di codice le ottimizzazioni sparivano e i numeri erano completamente diversi. A proposito, nella nostra libreria di profiling usiamo il registro TSC del processore per misurare i tempi direttamente in cicli di clock.

Provando il tuo esempio con il VC2003 io ottengo i seguenti valori:

SenzaThis: 1031
ConThis: 1041

La differenza e' piccolina! Andando a guardare il disassemblato, pero', si scopre che il compilatore ha:

- fatto un parziale unroll del loop nel caso SenzaThis (ma questo lo posso ammettere)
- compilato l'assegnamento di ConThis senza usare this, quindi come se fosse una variabile statica, cosa resagli possibile dalla semplicita' della situazione.


Quindi il test non fa testo ;), ci vuole qualcosa di piu' complicato...

Luca


Other related posts: