Improving the performance of transactional memory application on multicores : a machine learning based approach