AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 578, trackbacks - 27

Il problema delle ottimizzazioni premature

Sono pienamente d'accordo su quanto affermato nel post Why optimizing without profiling is inefficient riguardo alle ottimizzazioni premature.

Per me che ho iniziato a sviluppare sotto DOS con grossi limiti di memoria e performance è stato difficile iniziare a ragionare sull'architettura del sistema senza pensare a priori alle ottimizzazioni.

Il grosso problema delle ottimizzazioni premature è che rendono il codice poco leggibile; non solo, a volte le perfomance globali del sistema non migliorano perchè il collo di bottiglia è da un'altra parte.

Questo non significa di ignorare il problema, ma semplicemente che le performance vanno misurate in modo da capire esattamente cosa rallenta un sistema.

Un esempio eclatante l'ho vissuto quando ho iniziato a sviluppare in C#, per pigrizia, per confrontare due stringhe ignorando il case, utilizzavo il metodo ToLower come segue:

                if (s1.ToLower() == s2.ToLower())

                {

                    // ...

                }

Subito ho pensato che il motivo della lentezza dell'applicazione fosse l'accesso al database, utilizzando un profiler ho scoperto che il collo di bottiglia era il compare tra le stringhe!

Sostituendo il confronto precedente con:

                if (string.Compare(s1, s2, true) == 0)

                {

                    // ...

                }

Ho avuto un bell'incremento di performance.

P.S.: Questo è il centesimo post del mio blog, sembra incredibile di averne scritti così tanti; quando ho iniziato mai avrei immaginato di avere la costanza di continuare a postare per tanto tempo.

Print | posted on mercoledì 29 novembre 2006 15.32 |

Feedback

Gravatar

# Re: Il problema delle ottimizzazioni premature

proprio stamattina stavo studiando su CC2 il code-tuning. Sono rimasto stupito nel constatare che questo tema viene messo in secondo piano, preferendo la leggibilità. E' come se le performance fossero più a carico del compilatore.
29/11/2006 16.21 | Igor Damiani
Gravatar

# re: Il problema delle ottimizzazioni premature

Le performance sono importanti, perchè se l'applicazione per l'utente è "troppo lenta" viene vista come poco usabile.
La differenza consiste nella fase in cui tenerne conto, se pensi subito alle performance e non al design rischi di perderti nei dettagli implementativi perdendo di vista l'archittettura del sistema.
La leggibilità del codice è importante perchè lo rende più semplice da mantenere, non ti è mai capitato ad esempio di riprendere in mano un software scritto da te e fare fatica per iniziare a lavorarci?
29/11/2006 16.47 | Antonio Ganci
Gravatar

# re: Il problema delle ottimizzazioni premature

Questa sera in una località segreta in provincia di MO si terrà uno Spritz-Party gentilmente offerto da Antonio a tutti i suoi colleghi x festeggiare il suo 100simo post.

C o m p l i m e n t i
e 100 di questi Party ;-)
29/11/2006 17.20 | Luca Minudel

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 5 and type the answer here:

Powered by: