PDA

Visualizza la versione completa : [generale] Ottimizzazione del codice


zacca94
25-11-2014, 10:55
So che è l'era dello spreco e ormai tutti si preoccupano più di avere un codice strutturato in maniera più professionale e si occupano meno di quello che può essere il tempo di esecuzione di uno script.

Ma io che sono di mentalità antica preferisco la seconda opzione, quindi chiedo a voi che avete una esperienza maggiore se conoscete articoli, libri o altro in cui viene spiegato questo processo.

Per fare un esempio, alcune tecniche che mi sono state insegnate dalla mia professoressa di sistemi sono:
- Inserire nell'if principale l'istruzione che è più probabile venga eseguita in maggior misura
- Effettuare conteggi ed altro al di fuori delle istruzioni di ciclo

Altro?

MItaly
25-11-2014, 11:29
Quello che vale per tutti i linguaggi è fare profiling per individuare quali sono i veri colli di bottiglia del codice e usare algoritmi più efficienti - lottando con il compilatore magari raddoppio la velocità di un blocco di codice, ma se uso un algoritmo O(n^2) quando andrebbe bene un O(n log n) le prestazioni possono crollare di diversi ordini di grandezza.

Per il resto, molto dipende dal linguaggio a cui fai riferimento... i suggerimenti che vanno bene per un linguaggio di scripting (che tipicamente vanno nella direzione di cercare di fare la maggior parte delle operazioni tramite builtin del linguaggio, ovvero codice compilato) saranno diversi da quelli per un linguaggio che compila nativo (come C o C++), a loro volta non identici a quelli per i vari assembly (dove moltissimo dipende dall'ISA di riferimento e addirittura dallo specifico modello di processore).

Scara95
25-11-2014, 12:15
Di certo il compilatore fa meglio di te, tu preoccupati degli algoritmi.

Poi, se e solo se, noti che ci sono problemi di performance preoccupati delle micro ottimizzazioni.

Poi vale ciò che ha detto MItaly!

M.A.W. 1968
25-11-2014, 13:44
Esiste una mole sterminata di letteratura specifica sull'ottimizzazione, in particolare fuori dal noioso mondo mainstream la capacità di concepire e applicare ottimizzazioni estreme di ogni genere è un requisito professioniale assolutamente fondamentale (es. microcontroller e core embedded assortiti).

Fa' riferimento alla prima parte di questa bibliografia (http://www.ioprogrammo.it/index.php?topic=14800.msg61573#msg61573) per un orientamento iniziale, in particolare Agner Fog e Randall Hyde trattano ampiamente la questione delle ottimizzazioni anche su piattaforme mainstream moderne.

Loading