PHP Excel, la classe migliora notevolmente le performance

phpexcel (codeplex) logo

Utilizzo la classe PHPExcel da un oltre un anno in un progetto sviluppato per Energika. L’anno scorso, dopo aver anche dato il mio piccolo contributo alla classe, il progetto è andato in produzione con la vecchia release 1.6.3

Come spesso accade, quando le cose funzionano, difficilmente si aggiorna una libreria. Si dovrebbe, certo, ma non è sempre così. Se l’aggiornamento richiede modifiche al codice lasci tutto come sta. Se l’aggiornamento rischia di fermare l’azienda non tocchi nulla. Poi mettici il tempo che è sempre meno…
Se invece la richiesta di ottimizzazione del codice arriva direttamente da parte del cliente (sono veramente pochi!) lo fai, eccome!
Ho passato quindi una settimana a rivedermelo per filo e per segno. Tra aggiornamenti, qualche dritta di Maarten e modifiche al codice originario siamo arrivati ad un ottimo risultato: un abbattimento dei tempi del 70% circa!

Come evidenziato nel changelog la nuova classe PHPExcel ultima versione (1.7.0), rilasciata proprio in questi giorni (il 10/08/09), migliora le performance nelle operazione di formattazione delle celle, nello sviluppo delle formule e altre utilissime funzioni.

Dal file changelog 1.7.0:
– Feature:  (MBaker) – New RPN and stack-based calculation engine for improved performance of formula calculation
–   Faster (anything between 2 and 12 times faster than the old parser, depending on the complexity and nature of the formula)
–   Significantly more memory efficient when formulae reference cells across worksheets
….
–   Better trapping/handling of NaN and infinity results (return #NUM! error)
–   Improved handling of empty parameters for Excel functions
– Feature:  (MBaker) – New calculation engine can be accessed independently of workbooks (for use as a standalone calculator)
….
– Feature:  (ET) Work item  9794 – Support arbitrary fixed number of decimals in PHPExcel_Style_NumberFormat::toFormattedString()
– Feature:  (ET) Work item  6857 – Improving performance and memory on data dumps
–    Various style optimizations (merging from branch wi6857-memory)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *