Liverpool” post=79856Devo moltiplicare una lunghezza per un numero razionale. E’ più veloce il riassegnamento del nuovo valore (es: [tt]\len=0.5\len[/tt]) oppure il passaggio attraverso [tt]\multiply[/tt] e [tt]\divide[/tt]? A parte questo, i due metodi risultano indifferenti?
Se eseguo dieci milioni di volte l’assegnazione
`\dimen2=1.5\dimen0`
(avendo già detto [tt]\dimen0=1cm[/tt]) impiego un tempo di circa 20 secondi.
Lo stesso test sull’assegnazione
`\dimen2=\dimen0 \multiply \dimen2 by 3 \divide\dimen2 by 2`
ne richiede circa 30.
Il test è (in Plain TeX)
`\dimen0=1cm
%\def\a{\dimen2=1.5\dimen0 }
\def\a{\dimen2=\dimen0 \multiply \dimen2 by 3 \divide\dimen2 by 2 }
\def\b{\a\a\a\a\a\a\a\a\a\a}
\def\c{\b\b\b\b\b\b\b\b\b\b}
\def\d{\c\c\c\c\c\c\c\c\c\c}
\def\e{\d\d\d\d\d\d\d\d\d\d}
\def\f{\e\e\e\e\e\e\e\e\e\e}
\def\g{\f\f\f\f\f\f\f\f\f\f}
\def\h{\g\g\g\g\g\g\g\g\g\g}
\h
\bye`
e si può trascurare il tempo necessario per le espansioni.
In conclusione non vedo perché farsi problemi: dieci milioni di quelle assegnazioni sono una quantità alquanto esagerata per un normale documento anche di grandi dimensioni.
Ciao
Enrico