
Haskell in Green Land: Analyzing the Energy Behavior of a Functional Language - fernandocastor
https://sites.google.com/a/cin.ufpe.br/castor/saner_2016__Haskell_final.pdf?attredirects=0&d=1
======
fernandocastor
In this paper, we attempt to shed light on the energy behavior of programs
written in a lazy purely functional language, Haskell. We have conducted two
empirical studies to analyze the energy efficiency of Haskell programs from
two different perspectives: strictness and concurrency. Our experimental space
exploration comprises more than 2000 configurations and 20000 executions. We
found out that small changes can make a big difference in terms of energy
consumption. For example, in one of our benchmarks, under a specific
configuration, choosing one data sharing primitive (MVar) over another (TMVar)
can yield 60% energy savings. In another benchmark, the latter primitive can
yield up to 30% energy savings over the former. Thus, tools that support
developers in quickly refactoring a program to switch between different
primitives can be of great help if energy is a concern. In addition, the
relationship between energy consumption and performance is not always clear.
In sequential benchmarks, high performance is an accurate proxy for low energy
consumption. However, for one of our concurrent benchmarks, the variants with
the best performance also exhibited the worst energy consumption. To support
developers in better understanding this complex relationship, we have extended
two existing performance analysis tools to also collect and present data about
energy consumption

