Hydra is an extension of Spy profiler that support comparison between profiles gathered from multiple software versions.
Lito is a tool that statically analyze the source code changes of a given version to determine if these change could cause a performance regressions. This analisys is done using run-time information gathered from the older versions.
View the Project on SmalltalkHub juampi/hydra
Features
- Hydra execute from a pharo image server, a number of benchmarks in all images (each contains a specific software version).
- Hydra collect the number of messages that a benchmark sent during their execution.
- It is also possible collect the number of sent message at method level.
- Hydra also collect static information such as, classes, methods, packages, and method source code.
Project & Benchmarks
At following, we list the benchmarks of each software project:
- Morphic : benchmarks , package versions
- Spec: benchmarks , package versions
- Nautilus: benchmarks , package versions
- Mondrian: benchmarks , package versions
- Roassal: benchmarks , package versions
- Rubric: benchmarks , package versions
- Zinc: benchmarks , package versions
- GraphET: benchmarks , package versions
- NeoCSV: benchmarks , package versions
- XMLSupport: benchmarks , package versions
- Regex: benchmarks , package versions
- Shout: benchmarks , package versions
- PetitParser: benchmarks , package versions
- XPath: benchmarks , package versions
- GTInspector: benchmarks , package versions
- Soup: benchmarks , package versions
- NeoJSON: benchmarks , package versions
Creating a Pharo image for each software version
Requirements.
Hydra takes as imput a set of Pharo images, it assume that each have already installed a software version, fuel, smark, hydra(itself) and the benchmark of the project.
Hydra provide three different ways to create images with each project versions:
- Configuration-based, hydra provides an script that create an image for each version in the configuration. It copy a fresh image from the prototype folder (a folder with a clean image), then load the project version, fuel, smart, hydra and the project benchmarks.
- Package-based, Hydra provides an script that create an image for each version of a simple package. This is useful when projects have not a configuration and they are saved in smalltalkhub as using only one package. For instance, Roassal, Shout, NeoCSV, NeoJSON, among others.
- Pharo file server, some projects do not have a configuration, but they are in the continuous integration server of Pharo. Therefore, every single time that these projects are changed, a new Pharo version is released. In this case, it is possible download al Pharo releases from the server. Hydra provides an script that create an image each time that a Pharo release modify an specific project version, such as, Nautilus, Morphic, among others.