How Programming Languages and Paradigms Affect Performance and Energy in Multithreaded Applications - Magalhães, Guilherme Grunewald; Sartor, Anderson Luis; Lorenzon, Arthur Francisco; Navaux, Philippe Olivier Alexandre; Beck, Antonio Carlos Schneider (Anais do Simpósio Brasileiro de Engenharia de Sistemas Computacionais (SBESC); 2016: Anais do VI Simpósio Brasileiro de Engenharia de Sistemas Computacionais, 2016)
Considering that multithreaded applications may be implemented using several programming languages and paradigms, in this work we show how they influence performance, energy consumption and energy-delay product (EDP). For that, we evaluate a subset of the NAS Parallel Benchmark, implemented in both procedural (C) and object-oriented programming languages (C++ and Java). We also investigate the overhead of Virtual Machines (VM) and the improvement that the Just-In-Time (JIT) compiler may provide. We show that the procedural language has better scalability than object-oriented ones, i.e., the improvements in performance, EDP, and energy savings are better in C than in C++ and Java as the number of threads increases; and that C can be up to 76 times faster than Java, even with the JIT mechanism enabled. We also demonstrate that the Java JIT effectiveness may vary according to the benchmark (1.16 and 23.97 times in performance and 1.19 to 19.85 times in energy consumption compared to the VM without JIT); and when it reaches good optimization levels, it can be up to 23% faster, consuming 42% less energy, and having an EDP 58% lower than C++.