Generators offer an elegant way to express iterators. However, their performance has always been their Achilles heel and has prevented widespread adoption. We present techniques to efficiently implement and optimize generators.
We have implemented our optimizations in ZipPy, a modern, light-weight AST interpreter based Python 3 implementation targeting the Java virtual machine. Our implementation builds on a framework that optimizes AST interpreters using just-in-time compilation. In such a system, it is crucial that AST optimizations do not prevent subsequent optimizations. Our system was carefully designed to avoid this problem. We report an average speedup of 3.58X for generator-bound programs. As a result, using generators no longer has downsides and programmers are free to enjoy their benefits.
Fri 24 OctDisplayed time zone: Tijuana, Baja California change
10:30 - 12:00
|Accelerating Iterators in Optimizing AST Interpreters|
Wei Zhang University of California, Irvine, Per Larsen University of California, Irvine, Stefan Brunthaler University of California, Irvine, Michael Franz University of California, IrvineLink to publication
|Call Sequence Prediction through Probabilistic Calling Automata|
Zhijia Zhao College of William and Mary / North Carolina State University, Bo Wu College of William and Mary, Mingzhou Zhou College of William and Mary, Yufei Ding College of William and Mary, Jianhua Sun College of William and Mary, Xipeng Shen North Carolina State University, Youfeng Wu Intel CorporationLink to publication
|Space-Efficient Multi-Versioning for Input-Adaptive Feedback-Driven Program Optimizations|
Mingzhou Zhou College of William and Mary, Xipeng Shen North Carolina State University, Yaoqing Gao IBM Toronto Labs, Graham Yiu IBM Toronto LabsLink to publication
|The HipHop Virtual Machine|
Keith Adams Facebook, Jason Evans Facebook, Bertrand Maher Facebook, Guilherme Ottoni Facebook, Drew Paroski Facebook, Brett Simmers Facebook, Edwin Smith Facebook, Owen Yamauchi FacebookLink to publication