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

- Institution: CERN
- Department: Conferences
- Speaker: Wim Lavrijsen
- Year: 2012
- Language: English
- Subjects: Physics, Computer science, Earth and environment
- Source: [CERN](https://videos.cern.ch/record/3017847)
- Licence: [CERN](http://copyright.web.cern.ch)
- Who can watch: Tweens profiles and older (sources give no ratings; placed by Invisible Network from the source's own words)

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..

0:00:00 Slide 1

0:00:44 Slide 2

0:01:28 Slide 3

0:02:55 Slide 4

0:04:22 Slide 5

0:05:49 Slide 6

0:07:17 Slide 7

0:08:44 Slide 8

0:10:11 Slide 9

0:11:38 Slide 10

0:13:05 Slide 11

## Lectures

1. [Optimizing Python-based ROOT I/O with PyPy's Tracing JIT](https://invisiblenetwork.ai/learn/cern/3017847/a95fae8c48e2), 15 min (CERN's player)
