Le performance contano

di Daniele Bochicchio, in ASPItalia.com Network,

In questi ultimi mesi sono stato talmente preso che per trovare qualche ritaglio di tempo in questi giorni per ottimizzare un attimo il sito non è stato facile.

Recentemente, a causa delle nuove funzionalità che abbiamo tirato su, ho notato (e mi è stato segnalato) un rallentamento di alcune parti del sito, soprattutto del forum.

Generalmente quando mi devo occupare di un progetto, la parte che preferisco è senza dubbio il performance tuning, oltre al bug hunting. Ognuno di noi ha attitudini personali, a me viene bene trovare i possibili errori e quindi correggerli. Così, praticamente, mi sono rivisto quasi ogni singolo pezzo dell'engine, dai sistemi di filtro fino agli handler, passando per modules, custom controls e compagnia. Ho fatto un bel po' di refactoring ed ottimizzato un bel po' di parti, con notevoli benefici.

Provo sempre a sviluppare qualcosa tenendo a mente che le performance sono il punto di inizio, ma può capitare che poi un qualche dettaglio sfugga o si sottostimi la portata di certe scelte. Recentemente ho avuto a che fare con il sito di MTV, quindi ho imparato ancora di più che bisogna pensare sempre almeno 200 volte a quello che si fa (prima mi limitavo a 10), fosse anche un piccolissimo metodo insignificante per ripulire una stringa, perchè in un'applicazione web il traffico ed il carico sono fattori che non si possono sapere a priori, dunque è meglio evitare qualsiasi genere di problema. Certo, MTV è un caso a parte, non mi è mai capitata altra applicazione con carichi così alti, ma il discorso resta praticamente lo stesso, nel "piccolo" del nostro network.

Torando al nostro engine, sono riuscito a sistemare alcuni problemi legati al forum ed al sistema di rewriting, che era stato pensato nel 2003 per alcune parti e poi pian piano aggiunto praticamente a tutto il sito (e, credetemi, sono un numero spaventoso di classi, pagine e user control accumulati in questi 6-7 anni, più alcuni pezzi in classic ASP che sono rimasti lì per "compatibilità"). Erano rimaste alcune RegEx che ovviamente non aiutano per niente, sotto carico, e che ho sostituito con strutture equivalenti che dal punto di vista di allocazione di memoria e consumo di CPU sono nettamente più performanti. Generalmente, se possibile, evito di utilizzare RegEx in punti critici perchè non mi hanno mai pienamente convinto dal punto di vista dell'impatto sulla CPU e sono facilmente sostituibili con altre strutture che spesso hanno notevoli vantaggi.

Adesso la situazione generale dovrebbe essere molto vicina all'ottimo, le performance sono davvero eccezionali e pare quasi che abbiamo cambiato server, senza in realtà averlo fatto.

Feedback e domande come sempre ben accetti :)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese