Seminar Talk by Prof. Fernando Castor

Title: Small Changes Can Make a Big Difference: Two studies on the energy efficiency of programming approaches

Speaker: Fernando Castor (Federal University of Pernambuco, Brasil)

Date/time: 2 pm, Tuesday, March 22, 2016

Location: W911, Building West #8, Ookayama Campus, Tokyo Tech

Prof. Fernando Castor

Abstract: Energy consumption has become an increasingly important topic in software development.  This growing importance has led researchers to evaluate existing techniques, tools, and languages for application development from an energy-centric perspective. Recent work has studied the effect that factors such as code obfuscation, Android API calls, object-oriented code refactorings, and constructs for concurrent execution have on energy. This presentation discusses two additional dimensions: (i) functional programming; and (ii) programming languages for developing Android applications.

First, we attempt to shed light on the energy behavior of programs written in Haskell, a lazy, purely functional programming language. We analyze the energy efficiency of Haskell programs from two different perspectives: strictness and concurrency. More specifically, we investigate the extent to which it is possible to save energy by refactoring existing Haskell programs to use different data structure implementations and concurrent programming constructs. Overall, experimental space exploration comprises more than 2000 configurations and 20000 executions.

Second, we study the energy efficiency of Android app development approaches. Android apps can be developed in Java or in JavaScript. We compare the energy consumption and performance of 33 benchmarks written in these two languages and developed by several authors. We also reengineered two existing apps from the F-Droid directory written in Java and made parts of them run in JavaScript. We analyzed different models for the Java part of the apps to invoke the Javascript part and measured the energy consumption in all the cases.

Even though these two studies had very different contexts and target technologies, the same main conclusion could be drawn from both: Small changes can make a big difference in terms of energy consumption. Thus, tools that support developers in quickly refactoring a program to switch between different approaches can be of great help if energy is a concern. For example, in the Haskell study, in one benchmark, under a specific configuration, choosing one data sharing primitive (MVar) over another (TMVar) can yield 60% energy savings. On the other hand, in Android applications, modifying a relatively small, CPU-intensive part of an application could yield an order of magnitude savings in energy consumption. The presentation will also discuss context-specific findings for each study.