Re: Ottimizzazione

Francesco Potortì <[email protected]> Mon, 20 Jul 2026 16:44:10 +0200
Newsgroups gmane.linux.debian.user.italian
Organization ISTI-CNR, via Moruzzi 1, www.isti.cnr.it
Message-ID <[email protected]>
>avendo una macchina con problemi di carico CPU ma non di memoria =C3=A8 me=
glio=20
>usare:
>
>float m[16],mn;
>=E2=80=A6
>m[0]=3Dm[1];m[1]=3Dm[2];m[2]=3Dm[3];m[3]=3Dm[4];m[4]=3Dm[5];m[5]=3Dm[6];m[=
6]=3Dm[7];m[7]=3Dm[8];m[8]=3Dmn;
>e poi
>m[9]=3Dm[8]-m[3]+m[7]-m[2]+m[6]-m[1]+m[5]-m[0])/4+m[8];
>
>oppure usare un array circolare
>m[i&0xf]=3Dm[(i-5)&0xf]-m[(i-6)&0xf] ... e cos=C3=AC via con una sola riga=
 )i 1e=20
>la iterazione, ogni 15 secondi)

Ci provo.

Nel primo caso fai in pi=C3=B9 16 accessi in memoria.

Nel secondo caso fai in pi=C3=B9 otto sottrazioni e otto And nei registri.

Mi aspetto che una sottrazione e un And nei registri costino meno che due a=
ccessi in memoria.  Ma stiamo andando a cercare il pelo nell'uovo, per esse=
re sicuri che sia veramente cos=C3=AC bisogna provare e misurare i tempi, c=
he saranno molto vicini (immagino decine microsecondi se la memoria =C3=A8 =
Ram e il contenuto non =C3=A8 in cache).  Se l'operazione =C3=A8 fatta ogni=
 15s pu=C3=B2 avere senso porsi il problema solo se stiamo parlando di un i=
nterrupt driver in un sistema con vincoli di tempo reale molto stretti.

-- fp