Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Criteri generali

Precedente
SUPERIORE
Successiva

Vogliamo individuare dei criteri "oggettivi" da usare per scegliere tra due algoritmi, risolutivi dello stesso problema, quello che offre prestazioni migliori...

Correttezza dell’algoritmo

Un algoritmo risolve un problema se dà risposte esatte per ogni istanza del problema. Conviene allora prevedere subito le successive fasi di debugging utilizzando un ambiente di sviluppo integrato o aggiungendo delle istruzioni adatte allo scopo.

Interfaccia utente del programma

La facilità d’uso per l’utente finale è quasi sempre determinante nell’acquisto di un sistema (anche la piacevolezza dell’interfaccia grafica...).

Comprensibilità e modificabilità del codice

Un codice molto efficiente, secondo certi criteri, ma incomprensibile per chi non lo ha realizzato potrebbe diventare inutilizzabile. Spesso del codice risulta incomprensibile anche all’autore stesso se è passato molto tempo dalla stesura (perché non lo ha documentato).

Velocità e dimensione dell'eseguibile

Hardware, S.O, Linguaggio di programmazione, Compilatore, ... concorrono alle prestazioni finali del codice ma ipotizziamo che siano fissati.

Diventa significativo ottenere per il prodotto finale velocità massima e dimensione minima. La concorrenza non aspetta che venga messo in commercio un microprocessore più veloce di quello attuale, nel frattempo migliora le prestazioni del suo prodotto!

La velocità di esecuzione di un programma è condizionata dalle diverse velocità di accesso e diverse capacità dei dispositivi di memorizzazione.

Registri

Memoria Cache

R.A.M.

Memoria di Massa

Clock

1 Ghz

200 Mhz (?)

100 Mhz (?)

10 Mhz (?)

Dimensione

Byte

KiloByte

MegaByte

GigaByte

E’ evidente che utilizzare strutture dati quanto più piccole possibile significa garantire ad esse maggiore vicinanza al microprocessore, quindi maggiore velocità di accesso e quindi minor tempo d'esecuzione.

Variabili Semplici

Variabili Strutturate

Strutture Dinamiche

File

Interi, Reali

Vettori, Record

Liste, Alberi

Archivi

Del resto non è possibile rinunciare alla potenza dei dati strutturati oppure all’uso dei file in quanto unica possibilità di rendere permanenti i dati.

L’uso dei sottoprogrammi rallenta l’esecuzione del codice perché richiede l’allocazione dinamica dei parametri (1) e delle risorse locali (2) oltre che la chiamata (gosub) (3) e il ritorno al chiamante (ret) (4). Si tratta di operazioni che provocano sicuramente un rallentamento nell'esecuzione.

Rinunciare ai sottoprogrammi è un problema che si può risolvere solo caso per caso: se una procedura viene chiamata poche volte si può pensare di eliminarla inserendo direttamente il codice dove serve senza per questo aumentare troppo la dimensione dell’eseguibile.

Conclusioni

Tutti i criteri che non riguardano l’algoritmo ma la sua codifica non fanno parte della teoria degli algoritmi, che restringe il suo campo d’azione, allora, al consumo "atteso" di risorse hardware generiche ma sempre presenti: CPU, RAM, MM (memoria di massa).

Il consumo di memoria porta a definire dei criteri di complessità in spazio mentre quello della CPU viene caratterizzato dalla complessità in tempo (di occupazione della CPU).

Di nuovo dobbiamo trascurare tutti i giudizi tecnici sulle diverse possibilità di acquisto ma dobbiamo concentrare la nostra attenzione sull’algoritmo risolutivo...

Se diamo per scontato che tutti i criteri precedenti siano sempre applicati allora non rimane che mettere in discussione le singole istruzioni, cioè l’algoritmo.

Criteri generali - ApPuNtIdIuNiNfOrMaTiCo

Home • ECDL • Algoritmi • Java • Basi di dati • Seconda prova • Eccetera • Cerca nel sito

Precedente
SUPERIORE
Successiva