AntonioGanci

Il blog di Antonio Ganci
posts - 201, comments - 420, trackbacks - 31

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 Wednesday, November 29, 2006 3:32 PM |

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.
11/29/2006 4:21 PM | Igor Damiani
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET