Before revision:  Based on experimental observations, we design an adaptive technique that aims at setting the best combination of thread-level parallelism and CPU-core power state depending on the workload profile of the multi-threaded application.
After revision:  Based on experimental observations, we design an adaptive technique that selects in linear time the optimal combination of thread-level parallelism and CPU-core power state depending on the workload profile of the multi-threaded application.