License: Creative Commons Attribution 4.0 International license (CC BY 4.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.ECOOP.2021.15
URN: urn:nbn:de:0030-drops-140582
URL: https://drops.dagstuhl.de/opus/volltexte/2021/14058/
Go to the corresponding LIPIcs Volume Portal


Zhang, Guoqiang ; Shen, Xipeng

Best-Effort Lazy Evaluation for Python Software Built on APIs

pdf-format:
LIPIcs-ECOOP-2021-15.pdf (1 MB)


Abstract

This paper focuses on an important optimization opportunity in Python-hosted domain-specific languages (DSLs): the use of laziness for optimization, whereby multiple API calls are deferred and then optimized prior to execution (rather than executing eagerly, which would require executing each call in isolation). In existing supports of lazy evaluation, laziness is "terminated" as soon as control passes back to the host language in any way, limiting opportunities for optimization. This paper presents Cunctator, a framework that extends this laziness to more of the Python language, allowing intermediate values from DSLs like NumPy or Pandas to flow back to the host Python code without triggering evaluation. This exposes more opportunities for optimization and, more generally, allows for larger computation graphs to be built, producing 1.03-14.2X speedups on a set of programs in common libraries and frameworks.

BibTeX - Entry

@InProceedings{zhang_et_al:LIPIcs.ECOOP.2021.15,
  author =	{Zhang, Guoqiang and Shen, Xipeng},
  title =	{{Best-Effort Lazy Evaluation for Python Software Built on APIs}},
  booktitle =	{35th European Conference on Object-Oriented Programming (ECOOP 2021)},
  pages =	{15:1--15:24},
  series =	{Leibniz International Proceedings in Informatics (LIPIcs)},
  ISBN =	{978-3-95977-190-0},
  ISSN =	{1868-8969},
  year =	{2021},
  volume =	{194},
  editor =	{M{\o}ller, Anders and Sridharan, Manu},
  publisher =	{Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
  address =	{Dagstuhl, Germany},
  URL =		{https://drops.dagstuhl.de/opus/volltexte/2021/14058},
  URN =		{urn:nbn:de:0030-drops-140582},
  doi =		{10.4230/LIPIcs.ECOOP.2021.15},
  annote =	{Keywords: Lazy Evaluation, Python, API Optimization}
}

Keywords: Lazy Evaluation, Python, API Optimization
Collection: 35th European Conference on Object-Oriented Programming (ECOOP 2021)
Issue Date: 2021
Date of publication: 06.07.2021


DROPS-Home | Fulltext Search | Imprint | Privacy Published by LZI