Re: Rapidità di esecuzione dello scalamento di una lunghezza

#80678
Up
0
Down
::

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

Go to top