You are here: Home –> SQuOpt—The Scala Query Optimizer

SQuOpt—The Scala Query Optimizer—Paolo G. Giarrusso


This is the homepage for the Scala Query Optimizer research project, SQuOpt.

Often developers need to manually optimize computations on collections at the expense of readability and modularity. In the SQuOpt project we reuse and extend optimizations known in the database community to apply them over such collections and enjoy the modularity advantages.

Concretely, SQuOpt allows to write queries on Scala collections and run optimizations on them. Queries are expressed through a quite natural syntax, almost identical to the syntax for Scala for comprehensions; however, executing such for comprehensions yields a representation of the query, which can then be optimized.

This website will continue being updated.

What we provide

Additionally, we will provide the evaluation data from our new paper submission, including the raw dataset and scripts to regenerate the graphics and the tables.

The source code for which the evaluation was run corresponds to version aosd13-evaluated.

The raw evaluation data from a previous evaluation is already available.


This project benefited from code and ideas of many different people:


Code from our paper

Examples from our paper are implemented and tested in class ivm.tests.PaperTutorial.

Old evaluation

The code is located in class performancetests.opaltests.FindBugsAnalyses.

We provide the raw data collected, together with the script used to produce the tables included in the paper, based on R and runnable on Unix systems such as Mac OS X and probably Linux. Here they are.

For those interested only in the resulting graphs, here are the results.

In our evaluation, we compare our source code analyses with a reference implementation, namely FindBugs. We altered its source code to disable unrelated analyses, and provide the altered code.

To ensure reproducibility, we plan to simplify and document the exact steps needed to reproduce our results.

For the determined impatient, here is the current procedure, which will probably have a few rough edges and is still untested.


For any question or suggestion, feel free to contact me, Paolo G. Giarrusso, at pgiarrusso (at) informatik !dot! uni-marburg !dot! de.