• Nenhum resultado encontrado

Etapa 4 Execução e Medição das versões (Original e Transformada) nos Ambientes

A.1 Exemplo da IR do método setImports

4.2 Resultados dos Experimentos

4.2.4 Etapa 4 Execução e Medição das versões (Original e Transformada) nos Ambientes

Após as aplicações serem transformadas, os benchmarks foram executados e seus consu- mos de energia foram medidos com o objetivo de comparar os valores obtidos entre as versões. A execução dos benchmarks segue a metodologia detalhada na Seção 4.1.

Para o Ambiente1, a Tabela 4.6 apresenta os resultado para as 600 execuções do Xalan e a Tabela 4.7 para o Tomcat. A Tabela 4.8 apresenta os gráficos de Box Plot para as execuções tanto do Tomcat quanto do Xalan. Além disso, foi verificado através do Teste de Mann- Whitney-Wilcoxon (MWW) (WILKS, 2011), que os conjuntos de amostras são significativamente diferentes com um p-value bastante baixo: < 2.2e-16. O mesmo valor de p-value foi obtido para ambos os benchmarks. Foi escolhido o teste de Mann-Whitney-Wilcoxon, pois este teste não assume que as amostras analisadas seguem uma distribuição normal, diferentemente do Student T-test.

Também foram verificados os resultados estatísticos para duas medidas de efeito. A primeira, Cliff’s Delta, é uma medida de efeito não paramétrica para valores ordinais (CLIFF, 1993). A segunda, Vargha-Delaney (Â12) (VARGHA; DELANEY, 2000), possui uma interpre-

tação intuitiva: seu valor indica qual a probabilidade de uma distribuição A superar a B. Para este trabalho, a distribuição A é a versão original e a B é a transformada. A medida de efeito é interpretada da seguinte forma: muito pequena, menor que 0,1; pequena, entre 0,1 e 0,3; média, entre 0.3 e 0,5; grande, entre 0,5 e 0,7; muito grande, entre 0,7 e 0,9; e próximo a perfeição, entre 0,9 e 1. Dessa forma, tanto para o Xalan (Cliff’s Delta = 0,75 e Â12 = 0,88) quanto para

o Tomcat (Cliff’s Delta = 0,72 e Â12 = 0,43) os valores relativos às versões originais foram

maiores, com a medida de efeito variando entre média a muito grande. Assim, para este trabalho, cujo objetivo é reduzir o consumo de energia das aplicações, os valores das medidas de efeito apresentados mostram que as versões transformadas possuem um consumo significativamente menor que as versões originais.

4.2. RESULTADOS DOS EXPERIMENTOS 52

Tabela 4.6: Xalan: resultados das 600 execuções

Versão Consumo de Energia (J) Mediana Desvio Padrão

Xalan Original 515.49 514.61 17.8

Xalan Transformado 503.80 504.26 17.37

Redução Consumo 2.27%

Tabela 4.7: Tomcat: resultados das 600 execuções

Versão Consumo de Energia (J) Mediana Desvio Padrão

Tomcat Original 217.81 215.89 23.49 Tomcat Transformado 208.30 207.21 23.57 Redução Consumo 4.37% Xalan ● ● ● ● ● ● ● ● ● ● ● 500 550 600 Xalan Original Energia(J) ● ● ● ● ● 450 500 550 600 Xalan Transformado Energia(J) Tomcat ● ● 200 250 300 350 Tomcat Original Energia(J) ● 150 200 250 300 350 400 Tomcat Transformado Energia(J) Original Transformado

4.3. ANÁLISE DOS RESULTADOS 53 consumo de energia apresentarou uma redução de 2.27% para o Xalan e 4.37% para o Tomcat. Além disso, percebe-se que foram poucos outliers apresentados nas execuções, não influenciando os resultados finais.

Para o Ambiente2, a Tabela 4.9 apresenta os valores do consumo de energia para as versões original e transformada para o Xalan, e a Tabela 4.10 para o Tomcat.

Tabela 4.9: Xalan: consumo de energia para o Ambiente2

Versão 1ª Rodada (J) 2ª Rodada (J) 3ª Rodada (J)

Xalan Original 1563.9 1573.73 1561.91

Xalan Transformado 1559.47 1518.74 1525.53

Redução 0.28% 3.49% 2.33%

Para o Xalan, em todas as rodadas, houve uma redução do consumo de energia da versão transformada com relação à versão original. A redução do consumo de energia chegou até 3.49%

Tabela 4.10: Tomcat: consumo de energia para o Ambiente2

Versão 1ª Rodada (J) 2ª Rodada (J) 3ª Rodada (J)

Tomcat Original 178.93 177.75 189.43

Tomcat Transformado 173.16 175.18 188.78

Redução 3.22% 1.45% 0.34%

Para o Tomcat, todas as rodadas também apresentaram uma melhora do consumo de energia. A redução do consumo de energia chegou até 3.22%. Desta forma, houve uma redução do consumo de energia entre as versões transformada e original.

4.3 Análise dos Resultados

Este trabalho apresenta um estudo empírico para validar se é possível reduzir o consumo de energia das aplicações utilizando a abordagem estática apresentada. Esta pesquisa foi motivada pela seguinte questão:

QP1 - É possível melhorar o consumo de energia de uma aplicação através de uma abordagem estática para recomendação de estruturas de dados?

De acordo com os resultados apresentados, percebe-se que houve um melhoria em média de 2 a 3% nos benchmarks analisados. Essa melhoria à primeira vista parece pequena, porém é importante ressaltar que cada economia em consumo de energia é significativa, uma vez que é um recurso escasso. Dessa forma, espera-se que ganhos ainda maiores sejam obtidos em aplicações que façam muito mais uso de estrutura de dados. Apesar o Xalan e Tomcat utilizarem bastante estruturas de dados, como esse trabalho foca em coleções concorrentes e os benchmarks apenas utilizam uma parte dessas aplicações, a quantidade relativa às instancias de coleções analisadas não foi tão grande. Entretanto, foi significativa e apresentaram resultados positivos. Além disso, uma vez identificado uma oportunidade para melhorar o consumo de energia de uma

4.3. ANÁLISE DOS RESULTADOS 54 aplicação, o esforço necessário para realizar a transformação é considerado pequeno, diminuindo assim a barreira para adoção da técnica proposta. Outrossim, as recomendações são produzidas automaticamente e nenhum setup é necessário para executar as aplicações. Finalmente, as transformações, em geral, são simples de aplicar, como é discutido no próximo tópico.

Com relação a discussão sobre as complicações para se realizar as transformações sugeridas pela abordagem tem-se a seguinte questão:

QP2 - O quão simples é trocar implementações de estruturas de dados com o objetivo de reduzir o consumo de energia?

Boa parte das transformações recomendas pela ferramenta CECOTOOLsão simples de serem realizadas. No geral as trocas se dão apenas no tipo das implementações, principalmente quando se trata da troca de Hashtable para ConcurrentHashMap. Uma observação para esta transformação é relacionada ao método clone, uma vez que Hashtable implementa a interface Cloneable e ConcurrentHashMap não.

Outra transformação realizada foi a troca de Vector por synchronizedList. Nes- ses casos, além da troca entre os tipos, foi necessário trocar os métodos específicos da classe por métodos equivalentes (Tabela 4.4) da interface List. Essa troca também foi direta e bastante simples, uma vez que os métodos são equivalentes. A única diferença é o método add, pois ele retorna um boolean informando se a coleção foi alterada com sucesso e o addElement não. Apesar de existir essa pequena diferença, ela não foi um obstáculo para realizar a transformação. Também não foi possível realizar a troca quando o tipo específico era requerido pela inferface. Por exemplo, o método getEnvironment() da interface Context retorna Hashtable. Com isso, a troca de Hashtable por ConcurrentHashMap não pôde ser realizada, pois a interface Context está em uma biblioteca e esta troca implicaria em outras transformações para evitar quebrar clientes dessa interface. Outro caso em que não foi possível realizar a troca entre Hashtable e ConcurrentHashMap se deu quando a variável na verdade espera uma classe especializada de Hashtable, por exemplo Properties.

A Tabela 4.11 apresenta um resumo de todas as trocas realizadas. Adicionalmente, a Tabela 4.12 apresenta os percentuais das transformações com relação ao total das transformações que deveriam ser realizadas. Cerca de 90% dessas transformações foram realizadas. Ainda, a Tabela 4.13 apresenta um resumo das transformações que exigiram mais do que apenas a troca do tipo da variável, indicando as adaptações necessárias e quais não foram possíveis devido a implicações no código, trazidas pela transformação, que poderiam mudar o comportamento da aplicação ou exigiriam conhecimento aprofundado sobre o mesmo. Dessa forma, pode-se concluir que a maiorias das transformações realizadas neste trabalho foram simples.

Tabela 4.11: Sumarização das transformações realizadas

Tomcat Xalan Observações

Transformação Ambiente1 Ambiente2 Ambiente1 Ambiente2

Hashtable⇒ ConcurrentHashMap 21 20 10 10 Apenas Troca de Tipo

4.4. AMEAÇAS À VALIDADE 55

Documentos relacionados