selfopt-interp-performance icon indicating copy to clipboard operation
selfopt-interp-performance copied to clipboard

A reporting project on the performance of self-optimizing interpreters

Self-Optimizing Interpreters

This repository contains all the necessary bits and pieces for an evaluation of different ideas around self-optimizing interpreters.

Currently, the evaluation focusses on the following aspects:

  • partial evaluation vs. meta-tracing
    What are the tradeoffs with respect to engineering effort and performance?

  • optimization techniques and their benefits
    There a number of common patterns used for self-optimizing interpreters, and we are interested in which concrete impact they have on performance.

  • pure interpretation
    While peek-performance is one relevant criterion, startup time, and pure interpretation speed are relevant in a number of scenarios as well. Thus, we are interested in the impact of the various optimizations on interpretation speed.

  • the future
    Which new and powerful language features could self-optimizing interpreters facilitate? We think, they provide us with a technique that makes highly dynamic language features such as metaobject protocols practical. Here, we experiment with such techniques and investigate the performance potential.

Self-Contained, Complete, and Reproducible Evaluation Setup

This repository contains everything that is necessary to re-execute all experiments. Well, that excludes obviously the hardware, and operating system setup.

The following quick start instructions, allow to recreate the basic environment:

git clone --recursive https://github.com/smarr/selfopt-interp-performance

The setup has been used and tested on Ubuntu and OS X. The following programs are definitely required for execution:

  • ReBench (>= 0.5) for benchmark execution
  • knitr (>= 1.5) and R (>= 3.0) for report generation

For the various implementations, additional software is required:

  • Graal
    • C/C++ compiler (GCC, Clang)
    • Java 8
    • Python
  • JRuby
    • Maven

Licensing

The material in this repository is licensed under the terms of the MIT License. Please note, the repository links in form of submodules to other repositories which are licensed under different terms.