• Non ci sono risultati.

Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Valore 0,146766 0,143082 0,146158 0,143957 0,14

5.3 Stima risparmio energetico

5.3.3 Stima risparmio energetico sul test ad hoc

Si è voluto provare il metodo di calcolo della stima con il programma ad hoc creato per i test energetici.

Nella Tabella 5.9 sono riportate le stime del risparmio utilizzando il metodo descritto in precedenza.

Tabella 5.9 - Risparmio programma ad hoc

Classe Base Time (%) Linee codice classe Obiettivo Linee codice obiettivo Rapporto obiettivo / classe (%) Risparmio (%) POAsis 79.44 28 If-switch 7 25.00 13.24 Concat. 2 7.14 2.84 Totale 16.08

Nella Tabella 5.10 sono riportati i valori delle stime utilizzando un metodo leggermente modificato, ovvero sono state contate le linee di codice effettivamente eseguite.

Tabella 5.10 - Risparmio programma ad hoc con stima modificata

Classe Base Time % Linee codice classe Obiettivo Linee codice obiettivo Percentuale obiettivo / classe Risparmio (%) POAsis 79.44 157 If-switch 70 44.59 23.61 Concat. 20 12.74 5.06 Totale 28.67

Come si può vedere dai dati, anche tenendo conto delle effettive linee di codice eseguite, le stime sono decisamente più basse rispetto al reale risparmio energetico. Questo accade in quanto evidentemente le linee di codice prese in esame hanno un’influenza molto maggiore sul tempo di esecuzione rispetto alle altre.

124

Non si può quindi con precisione sapere quanto sarà il risparmio energetico, ma i dati confermano che potrebbe essere inferiore oppure anche molto maggiore rispetto alle aspettative, come in questo esempio.

125

Capitolo 6

6

Conclusione e sviluppi futuri

Questo lavoro di tesi ha avuto come obiettivo quello di esplorare il problema dell’ottimizzazione energetica del software, il quale è un aspetto particolare di un argomento molto più ampio come il Green Software.

Nella tesi si è analizzata la possibilità di migliorare l’efficienza energetica dei programmi scritti in linguaggio Java grazie all’introduzione di alcune regole di buona programmazione. Per farlo è stato preso in esame Adempiere, un programma ERP molto conosciuto ed Open Source. Analizzando il suo codice, la sua struttura ed il suo comportamento durante l’esecuzione, è stato possibile evidenziare alcuni aspetti sicuramente migliorabili.

Gli ambiti in cui ci si è concentrati sono stati quelli della manipolazione delle stringhe (come i concatenamenti), l’utilizzo di costrutti particolari come gli switch e gli iteratori e di tipi alternativi come StringBuilder e StringBuffer.

Sono state rilevate le prestazioni dei metodi contenenti gli obiettivi sopra descritti e le loro versioni alternative, riuscendo così a definire alcune regole di programmazione per una migliore efficienza di esecuzione. I risparmi sui tempi di esecuzione ottenuti con l’applicazione di una singola regola possono variare dal 15% (nel caso di iteratori con pochi cicli) fino a quasi all’80% (nel caso di sostituzione di una serie di diversi if con uno switch) rispetto alla versione originale.

Le regole ottenute sono state validate tramite test energetici sperimentali effettuati in laboratorio, che hanno permesso di verificare la loro bontà e la correlazione tra

126

risparmio temporale ed energetico. Un piccolo programma rispettante tutte le regole ha riportato un risparmio energetico dell’80%.

Gli ottimi risultati portano quindi a credere che questo tipo di studi possa portare a dei risultati concreti, immaginando anche l’effetto positivo che un risparmio energetico sul software può avere sui consumi dell’hardware.

Una stima grossolana su una tipica operazione compiuta sul programma Adempiere indica intorno al 3% la possibile riduzione del tempo di esecuzione riscrivendo il codice seguendo le regole trovate. Nonostante la stima prudente si può considerare un valore decisamente significativo, con la prospettiva di poterlo aumentare con l’aggiunta di ulteriori regole andando ad analizzare altri aspetti non presi in considerazione in questo lavoro, come per esempio la gestione dei file, della cache, delle comunicazione input-output, l’utilizzo di vettori e array ecc …

Si potrebbe infine pensare di automatizzare tutte le regole di buona programmazione trovate. Un modo interessante sarebbe quello di sviluppare un tool o un plug-in che estenda le funzionalità di un editor per la programmazione, come per esempio Eclipse. Questo plug-in potrebbe monitorare costantemente i costrutti presi in esame e segnalare prontamente al programmatore la possibilità di introdurre migliorie, fornendo anche indicazioni su come implementarle, magari con la possibilità di auto generazione di parte del codice.

127

7

Bibliografia

[1] Murugesan S. (2008), “Harnessing Green IT: Principles and Practices”, IT

Professional, 10, n.1 : 24-33.

[2] Brown E.G., Lee C. (2007), “Topic Overview: Green IT”, Forrester

Research report, Novembre 2007.

[3] Kumar R. (2007), “Important Power, Cooling and Green IT Concerns”,

Gartner report, Gennaio 2007.

[4] Restorick T. (2007), “An Inefficient Truth”, Global Action Plan Report, Raggiungibile all’URL:

http://www.globalactionplan.org.uk/green-it (ultima visita 18/11/2011)

[5] Francalanci C., Capra E. (2008), “Green IT sfide e opportunità”, Mondo

Digitale, 28: 36-42. Reperibile all’URL:

http://www.mondodigitale.net/Rivista/08_numero_4/Francalanci%20p. %2036-42_.pdf (ultima visita 17/11/2011)

[6] Agosta G., Capra E. (2011), “Green Software. Anche le applicazioni consumano energia”, Mondo Digitale, 37: 9-24. Reperibile all’URL:

http://www.mondodigitale.net/Rivista/11_numero_1/Capra_p_9_24.pdf

(ultima visita 17/11/2011)

[7] Stanford E. (2008), Environmental trends and opportunity for computer

system power delivery. 20-th International Symposium on Power

Semiconductor Devices and IC’s, 2008.

[8] Barroso L.A., Hölzle U. (2009), The Datacenter as a Computer: An

Introduction to the Design of Warehouse-Scale Machines. Ed. Morgan &

Claypool, Madison.

[9] International Energy Agency (2001), Key World Energy Statistics 2011. Reperibile all’URL:

128

http://www.iea.org/textbase/nppdf/free/2011/key_world_energy_stats.p df (ultima visita 17/11/2011)

[10] Decreto Legislativo 25 Luglio 2005 , n. 151. “Attuazione delle direttive 2002/95/CE e 2003/108/CE, relative alla riduzione dell'uso di sostanze pericolose nelle apparecchiature elettriche ed elettroniche, nonché allo smaltimento dei rifiuti”. Reperibile all’URL:

http://www.ambiente.it/impresa/legislazione/leggi/2005/dlgs151- 05.htm (ultima visita 17/11/2011)

[11] US Environmental Protection Agency (EPA) (2005), Energy Conservation:

Past & Present Projects: Green Computing Guide. University of Colorado

at Boulder, USA: Reperibile all’URL: http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1& ved=0CCEQFjAA&url=http%3A%2F%2Fwww.hallmarkpartners.com%2F Newsletters%2FSummer%25202008%2Fgreen_computing_guide.pdf&ei= UTXGTpr-GevP4QT1yrU-&usg=AFQjCNHjuImRTfBWok3HyBjBij5ius- 4Gg&sig2=cQgccyji10F6oxfdEP-w5A (ultima visita 18/11/2011)

[12] European Commission: Energy Efficiency. Raggiungibile all’URL:

http://ec.europa.eu/energy/efficiency/index_en.htm (ultima visita

18/11/2011)

[13] American Recovery and Reinvestment Act of 2009. Pagina di Wikipedia raggiungibile all’URL:

http://en.wikipedia.org/wiki/American_Recovery_and_Reinvestment_Act _of_2009 (ultima visita 18/11/2011)

[14] Gallazzi S., Formenti G. (2008), A methodology to evaluate empirically

software energy consumption and its impact on total cost of ownership.

Master’s thesis, Politecnico di Milano.

[15] Alberio A., Brianza B. (2009), Un’analisi esplorativa sull’ottimizzazione

del consume energetico del software. Tesi di Laurea, Politecnico di Milano.

[16] Enterprise Resource Planning. Pagina di Wikipedia raggiungibile all’URL:

Documenti correlati