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 numerocon 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 numeroquindi 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