Storage Strategies for Collections in Dynamically Typed Languages, Paper #103

This is the artifact for the paper "Storage Strategies for Collections in Dynamically Typed Languages" submitted to SPLASH 2013 by Carl-Friedrich Bolz, Lukas Diekmann and Laurence Tratt. The artifact includes several options to reproduce the results:
  • Standard setup (tarball): This archive includes the all necessary code to reproduce the complete experiment from the paper. Running `make' will checkout repositories, build several PyPy versions, setup virtual environments and run all benchmarks and built the tables and diagrams presented in the paper. The whole process takes around 1 to 2 days, depending on the machine.
  • Prebuilt setup (tarball): In this archive are included the prebuilt PyPy versions and the raw data from the benchmark runs from the paper. `make' will only generate the tables and diagrams from this data. This process only takes a few seconds.
  • Virtual Image (VirtualBox): Additionally this artifact comes with a virtual image that includes both previously mentioned tarballs and has all necessary dependencies preinstalled. To run the image you'll need VirtualBox.

Getting Started (Step-by-step instructions)

Virtual Image

  1. Install VirtualBox from https://www.virtualbox.org/
  2. Open VirtualBox
  3. File -> Import Appliance...
  4. Select vboximg.ova
  5. Boot the image
  6. Open a terminal: Click Dash Home (top left icon) -> Type terminal -> Enter.
  7. Change to folder: $ cd standard/ (or cd prebuilt/)
  8. Type make
The username for the virtualbox image is softdev and the password is softdev.

Tarballs (requires Unix/Linux)

  1. Install dependencies (e.g. on a Debian-esque Unix: $ apt-get install graphviz, gnuplot, mercurial, wget, python-dev)
  2. Check for PyPy dependencies: http://doc.pypy.org/en/latest/build.html
    1. $ apt-get install gcc make python-dev libffi-dev libsqlite3-dev pkg-config libz-dev libbz2-dev libncurses-dev libexpat1-dev libssl-dev libgc-dev python-sphinx python-greenlet
  3. Extract one of the setups: $ tar xfz standard.tar.gz (or tar xfz prebuilt.tar.gz)
  4. Change to the extracted folder: $ cd standard/ (or cd prebuilt/)
  5. Type make

Finding the results

After that you will find the tables (in latex format) in the folder tables/ and the diagrams (as pdf) in diagrams/.

PyPy Sourcecode

The sourcecode of PyPy can be found in standard/pypy-src after make has been executed. The sourcecode is also available online at https://bitbucket.org/pypy/pypy or can be manually checked out by running:

$ hg clone https://bitbucket.org/pypy/pypy

The relevant changes described in the paper can be found at:

  • pypy/objspace/std/listobject.py
  • pypy/objspace/std/setobject.py
  • pypy/objspace/std/dictmultiobject.py
  • pypy/objspace/std/objspace.py