The performance of many dynamic language implementations suffers from high allocation rates and runtime type checks. This makes dynamic languages less applicable to purely algorithmic problems, despite their growing popularity. In this paper we present a simple compiler optimization based on online partial evaluation to remove object allocations and runtime type checks in the context of a tracing JIT. We evaluate the optimization using a Python VM and find that it gives good results for all our (real-life) benchmarks.
Description
Allocation removal by partial evaluation in a tracing JIT
%0 Conference Paper
%1 Bolz:2011:ARP:1929501.1929508
%A Bolz, Carl Friedrich
%A Cuni, Antonio
%A FijaBkowski, Maciej
%A Leuschel, Michael
%A Pedroni, Samuele
%A Rigo, Armin
%B Proceedings of the 20th ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation
%D 2011
%I ACM
%K JIT PartialEvaluation PyPy RPython Tracing
%P 43--52
%R 10.1145/1929501.1929508
%T Allocation Removal by Partial Evaluation in a Tracing JIT
%X The performance of many dynamic language implementations suffers from high allocation rates and runtime type checks. This makes dynamic languages less applicable to purely algorithmic problems, despite their growing popularity. In this paper we present a simple compiler optimization based on online partial evaluation to remove object allocations and runtime type checks in the context of a tracing JIT. We evaluate the optimization using a Python VM and find that it gives good results for all our (real-life) benchmarks.
%@ 978-1-4503-0485-6
@inproceedings{Bolz:2011:ARP:1929501.1929508,
abstract = {The performance of many dynamic language implementations suffers from high allocation rates and runtime type checks. This makes dynamic languages less applicable to purely algorithmic problems, despite their growing popularity. In this paper we present a simple compiler optimization based on online partial evaluation to remove object allocations and runtime type checks in the context of a tracing JIT. We evaluate the optimization using a Python VM and find that it gives good results for all our (real-life) benchmarks.},
acmid = {1929508},
added-at = {2014-01-24T13:36:15.000+0100},
author = {Bolz, Carl Friedrich and Cuni, Antonio and FijaBkowski, Maciej and Leuschel, Michael and Pedroni, Samuele and Rigo, Armin},
biburl = {https://www.bibsonomy.org/bibtex/2c2bd40de6eca79a8707565cd98e3a712/gron},
booktitle = {Proceedings of the 20th ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation},
description = {Allocation removal by partial evaluation in a tracing JIT},
doi = {10.1145/1929501.1929508},
interhash = {4108f08a8db88ed0a996cf2c7296d246},
intrahash = {c2bd40de6eca79a8707565cd98e3a712},
isbn = {978-1-4503-0485-6},
keywords = {JIT PartialEvaluation PyPy RPython Tracing},
location = {Austin, Texas, USA},
numpages = {10},
pages = {43--52},
publisher = {ACM},
series = {PEPM '11},
timestamp = {2014-01-24T13:36:15.000+0100},
title = {Allocation Removal by Partial Evaluation in a Tracing JIT},
year = 2011
}