Re: Rapidità di esecuzione dello scalamento di una lunghezza

#80689
Up
0
Down
::

Liverpool” post=80170

Temo che non sia proprio vero. L’esecuzione di
`\dimen2=\dimexpr\dimen0*3/2\relax`
richiede essenzialmente lo stesso tempo di
`\dimen2=\dimen0 \multiply\dimen2 by 3 \divide\dimen2 by 2`

Però sul manuale di [tt]etex[/tt] c’è scritto

manuale di etexLe operazioni aritmetiche sono eseguite individualmente, tranne le operazioni di ‘scalamento’ (una moltiplicazione seguita immediatamente da una divisione) che sono eseguite come un’operazione combinata con un prodotto a 64 bit come valore intermedio

Questa frase sembra voler dire che mentre nella successione [tt]multiply+divide[/tt] le operazioni sono:
a) carico il numero
b) eseguo la moltiplicazione
c) scarico il numero
d) carico il numero
e) eseguo la divisione
f) scarico il numero

con le istruzioni di [tt]etex[/tt] le operazioni sono:
a) carico il numero
b) eseguo la moltiplicazione
c) eseguo la divisione sul numero in registro
d) scarico il numero

quindi si dovrebbe risparmiare un carico+scarico, se ho capito bene. Forse tu dici che alla fine si tratta di tempi infinitesimi?

Quel poco che si guadagna da un’assegnazione in meno si perde con l’uso di [tt]\dimexpr[/tt] che è più lento della manipolazione diretta dei registri.

Ciao
Enrico

Go to top