| HT articoli
| ProgrammazioneOttimizzare il codice delle nostre applicazioni. Introduzione
di Gabriele IzzoTable of Contents:
- Ottimizzare il codice delle nostre applicazioni. Introduzione
- Cosa significa ottimizzare il codice
- Ottimizzare conoscendo l'utilizzo del software
- Le tecniche per ottimizzare il codice
- Optimization blockers, un esempio pratico
- Optimization blockers, seconda parte
- Oltre il linguaggio, perchè l'ottimizzazione del codice conta anche nel mondo server
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à.
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.
Powered by Disqus