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
- Install VirtualBox from https://www.virtualbox.org/
- Open VirtualBox
- File -> Import Appliance...
- Select
vboximg.ova
- Boot the image
- Open a terminal: Click Dash Home (top left icon) -> Type
terminal
-> Enter.
- Change to folder:
$ cd standard/
(or cd prebuilt/
)
- Type
make
The username for the virtualbox image is
softdev
and the password is
softdev
.
Tarballs (requires Unix/Linux)
- Install dependencies (e.g. on a Debian-esque Unix:
$ apt-get install graphviz, gnuplot, mercurial, wget, python-dev
)
- Check for PyPy dependencies: http://doc.pypy.org/en/latest/build.html
-
$ 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
- Extract one of the setups:
$ tar xfz standard.tar.gz
(or tar xfz prebuilt.tar.gz
)
- Change to the extracted folder:
$ cd standard/
(or cd prebuilt/
)
- 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