21-25 May 2012
New York City, NY, USA
US/Eastern timezone

Optimizing Python-based ROOT I/O with PyPy's Tracing JIT

24 May 2012, 17:50
Room 802 (Kimmel Center)

Room 802

Kimmel Center

Parallel Software Engineering, Data Stores and Databases (track 5) Software Engineering, Data Stores and Databases


Wim Lavrijsen (Lawrence Berkeley National Lab. (US))


The Python programming language allows objects and classes to respond dynamically to the execution environment. Most of this, however, is made possible through language hooks which by definition can not be optimized and thus tend to be slow. The PyPy implementation of Python includes a tracing just in time compiler (JIT), which allows similar dynamic responses but at the interpreter-, rather than the application-level. Therefore, it is possible to fully remove the hooks, leaving only the dynamic response, in the optimization stage for hot loops, if the types of interest are opened up to the JIT. A general opening up of types to the JIT, based on reflection information, has already been developed (cppyy). The work described in this paper takes it one step further by customizing access to ROOT I/O to the JIT, allowing for automatic selective reading, judicious caching, and buffer tuning.

Primary author

Wim Lavrijsen (Lawrence Berkeley National Lab. (US))

Presentation Materials