Loading

| HT articoli

| Programmazione

Ottimizzare il codice delle nostre applicazioni. Introduzione

di Gabriele Izzo

L’attività di un programmatore è spesso rivolta alla semplice scrittura del codice. Il programmatore  analizza il problema per trovare la soluzione migliore e la implementa; la necessità di individuare e preparare la soluzione in tempi brevi, ha come effetto collaterale di dover tralasciare alcuni aspetti altrettanto importanti quanto il codice stesso, quali la sicurezza, e conseguenza di questo è l’emergere di bugs e vulnerabilità o instabilità del codice; un altro aspetto spesso tralasciato riguarda le performances. Il concetto “basta che funzioni”, che esegua  quello per cui è stato progettato non è un obiettivo valido per scrivere software di qualità.

emu_8086_assembler.gif

Assembler: le istruzioni vengono convertite dal compilare per essere poi utilizzate dalla CPU, in questo contesto è possibile notare quali sono i problemi e le soluzioni legate all'ottimizzazione, con forti impatti sulla CPU. 

La scrittura di programmi efficienti è un'attività impegnativa; è necessario individuare i punti deboli del codice dal punto di vista delle prestazioni, i cosiddetti colli di bottiglia, ed ottimizzarli in modo da aumentare le performances globali facendo attenzione a non peggiorare altri aspetti del software, come l’aumento della quantità di memoria utilizzata.

Il problema dell’ottimizzazione delle prestazione del codice è strettamente legato a quel codice definito come time-critical, vale a dire che ha dei vincoli temporali molto stretti da rispettare, che viene eseguito su processori con poche o limitate risorse (sistemi embedded per l'automotive, il digitale entertainment e simili). Ad esempio può presentarsi la necessità di dover rilasciare applicazioni real time per sistemi con poche risorse hardware, e diventa critico poter recuperare quante più risorse possibili facendo in modo che il codice esegua un numero di operazioni minore e/o in meno tempo, facendo un uso oculato della memoria e dei dispositivi di I/O. 

codiceesempio_logo

Commenti Recenti

Powered by Disqus
Tuesday 20 April 2010