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

  • From: Enrico Maria Giordano <e.m.giordano@xxxxxxxxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Tue, 25 Jan 2005 12:22:09 +0100


Luca Bisti wrote:
> 
> Ciao Enrico!
> 
> Purtroppo in situazioni cosi' semplici il compilatore effettua delle
> ottimizzazioni ad hoc e quindi vanifica lo scopo del test.

Basta disattivare tutte le ottimizzazioni, no?

> 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.

Certo, può essere.

> A proposito, nella nostra libreria di profiling
> usiamo il registro TSC del processore per misurare i tempi direttamente in
> cicli di clock.

Quindi avete potuto misurare esattamente quali erano i colli di
bottiglia e avete visto che uno di essi era l'utilizzo del this? Avete
anche provato con compilatori diversi?

> 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.

Azz... Anche disattivando tutte le ottimizzazioni? Purtroppo non sono in
grado di leggere il disassemblato.

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

Sì, questo l'avevo messo in conto. Comunque non sono ancora del tutto
convinto riguardo il fatto che il this da solo sia in grado di influire
così pesantemente...

EMG

--
EMAG Software Homepage:     http://www.emagsoftware.it
The EMG's ZX-Spectrum Page: http://www.emagsoftware.it/spectrum
The Best of Spectrum Games: http://www.emagsoftware.it/tbosg

Other related posts: