We propose a methodology to analyze algorithms in order to reduce energy waste in executing applications. Our methodology is based on three observations. First, the relation between power and frequency of a single core is approximately cubic. Thus it may be possible to run an application slower on a core in order to save energy. In the case of a parallel architecture, one has to also factor the effect (on performance and energy consumption) of the interaction between cores. Second, multicore architectures which aggressively manage power consumption by allowing cores to be operated at reduced frequencies are being developed. This means that parallel applications on a multicore architecture can be executed using a variable number of cores running at different frequencies-affecting both the performance of the application and the energy required to execute it. Lastly, there is a certain benefit (positive utility) in running an application faster and a cost (negative utility) in terms of the energy consumed. Expending energy that does not contribute to the overall utility wastes the energy. The precise trade-off between performance and energy consumption depends on the structure of a parallel algorithm and the associated utilities. We describe a methodology to do this trade-off and illustrate it with several parallel algorithms.