Software design e prestazioni

Nello sviluppo del software per la manipolazione delle immagini si è cercato di ottimizzare le prestazioni per ridurre il più possibile i tempi di elaborazione. Da un'analisi dei vari step che i programmi devono affrontare durante l'elaborazione, si è potuto notare che le fasi che incidono di più nel conteggio totale del tempo di elaborazione sono due: la fase di I/O verso l'hardisk per l'acquisizione dell'immagine e la successiva riscrittura, e la fase di parsing2.3 di ogni elemento della matrice che rappresenta l'immagine.

La fase di I/O verso l'hardisk rappresenta un collo di bottiglia nelle comunicazione interne di un computer, questo perché il reperimento delle informazioni non avviene in modo diretto, come ad esempio verso la RAM, ma deve seguire tre fasi:

Quindi si è scelto di implementare il software in modo che la fase di lettura sia unica per minimizzare il tempo delle fasi di Seek e Latency, copiando temporaneamente tutte le informazioni nella RAM che offre dei tempi di accesso notevolmente inferiori rispetto l'hardisk.

Il parsing degli elementi della matrice che rappresenta l'immagine, dal punto di vista procedurale, ha una complessità computazionale quadratica, ovvero, nel contesto di una elaborazione su di un computer monoprocessore il tempo di elaborazione aumenterebbe in modo quadratico con l'aumentare della dimensione dei dati da elaborare. Potendo disporre di computer multiprocessore per la manipolazione di immagini si è quindi deciso di sfruttare la possibilità di suddividere l'elaborazione totale in sotto elaborazioni simultanee ed indipendenti, affidandole ognuna ad un processore e solo alla fine del computo ricongiungere i risultati parziali ottenuti per ricostituire il risultato finale. Questa metodica permette di ridurre il tempo di elaborazione di un fattore proporzionale al numero di CPU di cui il computer dispone.

Mario Cavicchi 2007-07-25