Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
yi = A(i, :) x (i = 1, ..., m)
>> cachetest
primo test
Elapsed time is 0.203873 seconds.
secondo test
Elapsed time is 0.023361 seconds.
A*x
Elapsed time is 0.010208 seconds.
>>
Il secondo algoritmo notevolmente pi veloce del primo e
confrontabile con la funzione builtin.
La differenza di velocit si spiega con il fatto che MATLAB memorizza
la matrice per colonne e quindi il primo algoritmo soffre di problemi di
Memory Management (cache, etc).
Il Profiler 1
>> example1(5000);
Il Profiler 2
Preallocazione 1
2 0 0 0 0 0
0 0 0 0 0 1
Internamente la memoria allocata dalla matrice deve essere riallocata. Se
questoperazione avviene allinterno di un ciclo la velocit di esecuzione
pu risentirne.
Preallocazione 2
Mandandolo in esecuzione:
>> tic;example;toc
Elapsed time is 2.475201 seconds.
Preallocazione 3
>> tic;example;toc
Elapsed time is 0.006386 seconds.
Ottimizzazione JIT
Ottimizzazione JIT 2
Runtime Type Analysis che si basa sul fatto (quasi sempre vero) che
se una linea di codice stata processata, tutte le variabili manterranno
stessi tipi e dimensioni in successive chiamate. Viene pertanto generato
codice adhoc che pu essere utilizzato in seguito.
Se tipo o dimensione della variabile cambia, il codice sar rigenerato.
Ottimizzazione JIT 3
Ottimizzazione JIT 4
>> tic;simple;toc
Elapsed time is 0.169312 seconds.
Ottimizzazione JIT 5
dove:
f u n c t i o n d=intdummy
d =1000000;
Ottimizzazione JIT 6
>> tic;simplebad;toc
Elapsed time is 2.470977 seconds.
Altre limitazioni:
Espressioni condizionali if, elseif, while, switch che non valutino uno
scalare.
Vettorizzazione 1
Vettorizzazione 2
Vettorizzazione 3
Logica Vettorizzata
y j = x1 + x2 + ... + x j