Como linguagens de programação e paradigmas afetam desempenho e consumo energético em aplicações paralelas
Visualizar/abrir
Data
2016Orientador
Co-orientador
Nível acadêmico
Graduação
Outro título
How programming languages and paradigms affect performance and energy in multithreaded applications
Assunto
Resumo
Este trabalho realiza um estudo de como o uso de diferentes paradigmas e linguagens de programação podem influenciar no consumo energético e desempenho de aplicações paralelas. Para isso, foram utilizados diferentes kernels do NAS Parallel Benchmark, implementados em linguagens de programação orientadas a objeto (C++ e Java) e procedural (C). Também foi avaliada a influência do compilador Just-In-Time (JIT) na execução de aplicações implementadas na linguagem Java. A avaliação destas linguagens ...
Este trabalho realiza um estudo de como o uso de diferentes paradigmas e linguagens de programação podem influenciar no consumo energético e desempenho de aplicações paralelas. Para isso, foram utilizados diferentes kernels do NAS Parallel Benchmark, implementados em linguagens de programação orientadas a objeto (C++ e Java) e procedural (C). Também foi avaliada a influência do compilador Just-In-Time (JIT) na execução de aplicações implementadas na linguagem Java. A avaliação destas linguagens e paradigmas utilizou três métricas: desempenho, consumo energético e energy-delay product (EDP). Comparamos as implementações em C, C++, Java interpretada (sem o uso do compilador JIT) e Java compilada dinamicamente com o JIT. A partir da análise dos resultados obtidos da execução dos benchmarks, observou-se que a linguagem procedural C demonstrou melhor desempenho e menor consumo de energia que as linguagens orientadas a objeto Java e C++. Por exemplo, Java foi 50 vezes mais lenta que C, na execução da aplicação Lower-Upper (LU) sequencial, e C++ foi 7.98 vezes mais lento na execução da Integer Sort (IS) com 8 threads. Também observou-se que C++ foi superior a Java na maioria dos testes, por exemplo, Java foi 4.58 vezes mais lenta e gastou 4.16 vezes mais energia na execução da aplicação Scalar Pentadiagonal Solver (SP) com 8 threads. Observou-se também que Java tem uma dependência muito grande da eficiência do compilador JIT para obter um bom desempenho, por exemplo, na aplicação LU, onde o JIT não foi tão eficaz, Java foi 21.93 vezes mais lento que C++ na execução com 2 threads. ...
Abstract
This work studies how different programming languages and paradigms influence performance and energy consumption in multithreaded applications. For that, we evaluate different kernels of NAS Parallel Benchmark, implemented in both procedural (C) and object-oriented programming languages (C++ and Java). Also, it was investigated the improvement that the Just-In-Time (JIT) compiler may provide. The evaluation of this languages and paradigms has considered three different metrics: performance, ene ...
This work studies how different programming languages and paradigms influence performance and energy consumption in multithreaded applications. For that, we evaluate different kernels of NAS Parallel Benchmark, implemented in both procedural (C) and object-oriented programming languages (C++ and Java). Also, it was investigated the improvement that the Just-In-Time (JIT) compiler may provide. The evaluation of this languages and paradigms has considered three different metrics: performance, energy consumption and energy-delay product (EDP). We compare C, C++, interpreted Java (without JIT) and dynamically compiled Java implementations. From the analysis of the obtained results, we show that C (a procedural language) has better performance and consumes less energy than C++ and Java (object-oriented languages). For instance, Java was 50 times slower than C, in Lower-Upper (LU) sequential execution, and C++ was 7.98 times slower in Integer Sort (IS) execution with 8 threads. We also show that in most cases C++ has better performance than Java, for instance, Java was 4.58 times slower and consumed 4.16 times more energy in Scalar Pentadiagonal Solver (SP) execution with 8 threads. Also, we show that Java depends heavily on the JIT compiler efficiency, for instance, in LU execution, when JIT was not very effective, Java was 21.93 times slower than C++ executing with 2 threads. ...
Instituição
Universidade Federal do Rio Grande do Sul. Instituto de Informática. Curso de Ciência da Computação: Ênfase em Ciência da Computação: Bacharelado.
Coleções
-
TCC Ciência da Computação (1025)
Este item está licenciado na Creative Commons License