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 Oct
|10:30 - 10:52|
Wei ZhangUniversity of California, Irvine, Per LarsenUniversity of California, Irvine, Stefan BrunthalerUniversity of California, Irvine, Michael FranzUniversity of California, IrvineLink to publication
|10:52 - 11:15|
Zhijia ZhaoCollege of William and Mary / North Carolina State University, Bo WuCollege of William and Mary, Mingzhou ZhouCollege of William and Mary, Yufei DingCollege of William and Mary, Jianhua SunCollege of William and Mary, Xipeng ShenNorth Carolina State University, Youfeng WuIntel CorporationLink to publication
|11:15 - 11:37|
Mingzhou ZhouCollege of William and Mary, Xipeng ShenNorth Carolina State University, Yaoqing GaoIBM Toronto Labs, Graham YiuIBM Toronto LabsLink to publication
|11:37 - 12:00|
Keith AdamsFacebook, Jason EvansFacebook, Bertrand MaherFacebook, Guilherme OttoniFacebook, Drew ParoskiFacebook, Brett SimmersFacebook, Edwin SmithFacebook, Owen YamauchiFacebookLink to publication