Especialização especulativa de valores baseada em parâmetros

Detalhes bibliográficos
Autor(a) principal: Igor Rafael de Assis Costa
Data de Publicação: 2013
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Repositório Institucional da UFMG
Texto Completo: http://hdl.handle.net/1843/ESBF-97CNCD
Resumo: JavaScript emerge atualmente como uma das mais importantes linguagens de programação no desenvolvimento da interface com o usuário de aplicações Web. Desse modo, é essencial que os navegadores de Internet sejam capazes de executar programasJavaScript eficientemente. Entretanto, a natureza dinâmica dessa linguagem torna a eficiência de sua execução um desafio.Compiladores dinâmicos aparentam ser a ferramenta mais escolhida por desenvolvedores para lidar com tais desafios. Neste trabalho nós propomos uma técnica de especialização de valores especulativa baseada em parâmetros de função como uma estratégia para melhorar a qualidade do código produzido dinamicamente. Através de observação empírica, descobrimos que aproximadamente 60% das funções JavaScript encontradas nos 100 sítios web mais populares são chamadas apenas uma vez, ou são chamadas sempre com os mesmo parâmetros. Baseado nessa observação, neste trabalho nós adaptamos diferentes otimizações clássicas de código para especializar código a partir dos valores atuais dos parâmetros de uma função. As técnicas propostas foram implementadas no IonMonkey, um compilador JIT para JavaScript de qualidade industrial desenvolvido pela fundação Mozilla. Por meio de experimentos executados em três coleções populares de testes, SunSpider, V8 e Kraken, foram alcançados ganhos de desempenho apesar da natureza especulativa da técnica proposta. Por exemplo, combinando algumas das diferentes otimizações propostas, obtivemos ganhos de 5.38% no tempo de execução na coleção SunSpider, além de reduzir o tamanho do código nativo produzido em 16.72%.
id UFMG_dda8b04d903d3a5bfc6128c9f372853a
oai_identifier_str oai:repositorio.ufmg.br:1843/ESBF-97CNCD
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling Fernando Magno Quintao PereiraMariza Andrade da Silva BigonhaRenato Antonio Celso FerreiraFábio MascarenhasIgor Rafael de Assis Costa2019-08-14T15:55:15Z2019-08-14T15:55:15Z2013-03-07http://hdl.handle.net/1843/ESBF-97CNCDJavaScript emerge atualmente como uma das mais importantes linguagens de programação no desenvolvimento da interface com o usuário de aplicações Web. Desse modo, é essencial que os navegadores de Internet sejam capazes de executar programasJavaScript eficientemente. Entretanto, a natureza dinâmica dessa linguagem torna a eficiência de sua execução um desafio.Compiladores dinâmicos aparentam ser a ferramenta mais escolhida por desenvolvedores para lidar com tais desafios. Neste trabalho nós propomos uma técnica de especialização de valores especulativa baseada em parâmetros de função como uma estratégia para melhorar a qualidade do código produzido dinamicamente. Através de observação empírica, descobrimos que aproximadamente 60% das funções JavaScript encontradas nos 100 sítios web mais populares são chamadas apenas uma vez, ou são chamadas sempre com os mesmo parâmetros. Baseado nessa observação, neste trabalho nós adaptamos diferentes otimizações clássicas de código para especializar código a partir dos valores atuais dos parâmetros de uma função. As técnicas propostas foram implementadas no IonMonkey, um compilador JIT para JavaScript de qualidade industrial desenvolvido pela fundação Mozilla. Por meio de experimentos executados em três coleções populares de testes, SunSpider, V8 e Kraken, foram alcançados ganhos de desempenho apesar da natureza especulativa da técnica proposta. Por exemplo, combinando algumas das diferentes otimizações propostas, obtivemos ganhos de 5.38% no tempo de execução na coleção SunSpider, além de reduzir o tamanho do código nativo produzido em 16.72%.JavaScript emerges today as one of the most important programming languages for the development of client-side web applications. Therefore, it is essential that browsers be able to execute JavaScript programs efficiently. However, the dynamic nature of this programming language makes it very challenging to achieve this much needed efficiency. The just-in-time compiler seems to be the current weapon of choice that developers use to face these challenges. In this work we propose Parameter-based Speculative Value Specialization as a way to improve the quality of the code produced by JIT engines. We have empirically observed that almost 60% of the JavaScript functions found in the worlds 100 most popular websites are called only once, or are called with the same parameters. Capitalizing on this observation, we adapt several classic compiler optimizations to specialize code based on the run-time values of functions actual parameters. We have implemented the techniques proposed in this work in IonMonkey, an industrial quality JavaScript JIT compiler developed in the Mozilla Foundation. Our experiments, run across three popular JavaScript benchmarks, SunSpider, V8 and Kraken, show that, in spite of its highly speculative nature, our optimization pays for itself. As an example, we have been able to speedup the V8 benchmark by 4.83%, and to reduce the size of its native code by 18.84%.Universidade Federal de Minas GeraisUFMGLinguagem de programação (Computadores)ComputaçãoCompiladores (Programas de computador)Ciência da ComputaçãoEspecialização especulativa de valores baseada em parâmetrosinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisinfo:eu-repo/semantics/openAccessporreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMGORIGINALigorrafael.pdfapplication/pdf2190469https://repositorio.ufmg.br/bitstream/1843/ESBF-97CNCD/1/igorrafael.pdfba2d74ddec0c3dbd2f7ac0e8e802fe50MD51TEXTigorrafael.pdf.txtigorrafael.pdf.txtExtracted texttext/plain142762https://repositorio.ufmg.br/bitstream/1843/ESBF-97CNCD/2/igorrafael.pdf.txt762aa7433ef78d649926672b1d852508MD521843/ESBF-97CNCD2019-11-14 14:54:16.352oai:repositorio.ufmg.br:1843/ESBF-97CNCDRepositório de PublicaçõesPUBhttps://repositorio.ufmg.br/oaiopendoar:2019-11-14T17:54:16Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.pt_BR.fl_str_mv Especialização especulativa de valores baseada em parâmetros
title Especialização especulativa de valores baseada em parâmetros
spellingShingle Especialização especulativa de valores baseada em parâmetros
Igor Rafael de Assis Costa
Ciência da Computação
Linguagem de programação (Computadores)
Computação
Compiladores (Programas de computador)
title_short Especialização especulativa de valores baseada em parâmetros
title_full Especialização especulativa de valores baseada em parâmetros
title_fullStr Especialização especulativa de valores baseada em parâmetros
title_full_unstemmed Especialização especulativa de valores baseada em parâmetros
title_sort Especialização especulativa de valores baseada em parâmetros
author Igor Rafael de Assis Costa
author_facet Igor Rafael de Assis Costa
author_role author
dc.contributor.advisor1.fl_str_mv Fernando Magno Quintao Pereira
dc.contributor.referee1.fl_str_mv Mariza Andrade da Silva Bigonha
dc.contributor.referee2.fl_str_mv Renato Antonio Celso Ferreira
dc.contributor.referee3.fl_str_mv Fábio Mascarenhas
dc.contributor.author.fl_str_mv Igor Rafael de Assis Costa
contributor_str_mv Fernando Magno Quintao Pereira
Mariza Andrade da Silva Bigonha
Renato Antonio Celso Ferreira
Fábio Mascarenhas
dc.subject.por.fl_str_mv Ciência da Computação
topic Ciência da Computação
Linguagem de programação (Computadores)
Computação
Compiladores (Programas de computador)
dc.subject.other.pt_BR.fl_str_mv Linguagem de programação (Computadores)
Computação
Compiladores (Programas de computador)
description JavaScript emerge atualmente como uma das mais importantes linguagens de programação no desenvolvimento da interface com o usuário de aplicações Web. Desse modo, é essencial que os navegadores de Internet sejam capazes de executar programasJavaScript eficientemente. Entretanto, a natureza dinâmica dessa linguagem torna a eficiência de sua execução um desafio.Compiladores dinâmicos aparentam ser a ferramenta mais escolhida por desenvolvedores para lidar com tais desafios. Neste trabalho nós propomos uma técnica de especialização de valores especulativa baseada em parâmetros de função como uma estratégia para melhorar a qualidade do código produzido dinamicamente. Através de observação empírica, descobrimos que aproximadamente 60% das funções JavaScript encontradas nos 100 sítios web mais populares são chamadas apenas uma vez, ou são chamadas sempre com os mesmo parâmetros. Baseado nessa observação, neste trabalho nós adaptamos diferentes otimizações clássicas de código para especializar código a partir dos valores atuais dos parâmetros de uma função. As técnicas propostas foram implementadas no IonMonkey, um compilador JIT para JavaScript de qualidade industrial desenvolvido pela fundação Mozilla. Por meio de experimentos executados em três coleções populares de testes, SunSpider, V8 e Kraken, foram alcançados ganhos de desempenho apesar da natureza especulativa da técnica proposta. Por exemplo, combinando algumas das diferentes otimizações propostas, obtivemos ganhos de 5.38% no tempo de execução na coleção SunSpider, além de reduzir o tamanho do código nativo produzido em 16.72%.
publishDate 2013
dc.date.issued.fl_str_mv 2013-03-07
dc.date.accessioned.fl_str_mv 2019-08-14T15:55:15Z
dc.date.available.fl_str_mv 2019-08-14T15:55:15Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/1843/ESBF-97CNCD
url http://hdl.handle.net/1843/ESBF-97CNCD
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.publisher.initials.fl_str_mv UFMG
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
bitstream.url.fl_str_mv https://repositorio.ufmg.br/bitstream/1843/ESBF-97CNCD/1/igorrafael.pdf
https://repositorio.ufmg.br/bitstream/1843/ESBF-97CNCD/2/igorrafael.pdf.txt
bitstream.checksum.fl_str_mv ba2d74ddec0c3dbd2f7ac0e8e802fe50
762aa7433ef78d649926672b1d852508
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv
_version_ 1803589290868867072