Le performance contano

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 :)

Nella stessa categoria

Commenti
novecento scrive:
Le performance contano

Ma mettere un altro processore non spendevi meno?
..sto a scherza' dai..
09/12/2007 ore 18.41 | 1 risposta
»»»» Daniele Bochicchio scrive:
RE: Le performance contano

novecento ha scritto:
Ma mettere un altro processore non spendevi meno?
..sto a scherza' dai..


io sì!
scherzi a parte, è questione di ottimizzare meglio ed oggettivamente, se lo fai come l'ho fatto io, andando a controllare ogni singola virgola, la differenza si vede ad occhio nudo
10/12/2007 ore 20.03
Hellmaster scrive:
Le performance contano

Ciao Daniele volevo chiederti con quali strutture sostituisci le RegEx?
04/12/2007 ore 16.36 | 1 risposta
»»»» Daniele Bochicchio scrive:
Re: Le performance contano

hellmaster wrote:
Ciao Daniele volevo chiederti con quali strutture sostituisci le RegEx?

con vari IndexOf e, a seconda del caso, varianti varie. a "mano", insomma
04/12/2007 ore 18.02

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - ASP.NET, Media Center e tecnologia - Il blog di Daniele Bochicchio

TagCloud
.NET Framework, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5, 10annidi, ADO.NET, AJAX, Architettura, ASP, ASP.NET, ASP.NET 2.0, ASP.NET 2.0 per tutti, ASP.NET 3.5, ASP.NET 3.5 per tutti, ASP.NET AJAX, ASP.NET MVC, ASPItalia.com, Cache, CSS, Custom Control, Database, Databinding, Datagrid, Deployment, HttpHandler, HttpModule, HttpRuntime, IIS, ISAPI, Javascript, LINQ, LINQ to SQL, LogParser, Master Pages, Media Center, Membership API, Microsoft Expression, Mono, MySQL, Object Oriented Programming, Off Topic, Office, Pattern, Profile API, Provider Model, Report, Roles API, Security, Silverlight, Silverlight 2.0, SQL Server, User Control, Visual Studio, Web Service, Windows CardSpace, Windows Client, Windows Communication Foundation, Windows Live Services, Windows Mobile, Windows Presentation Foundation, Windows Server, Windows Vista, WinFS, XAML, XBox 360, XHTML, XML, XSLT
BLOG INFO
  • Post: 846
  • Commenti: 365
  • TrackBacks: 185
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA