Home

Awesome

Codespeed

Build Status PyPI version

Codespeed is a web application to monitor and analyze the performance of your code.

Known to be used by CPython, PyPy, Twisted and others.

For an overview of some application concepts see the wiki page

Installation

You will need Python 2.7 or 3.5+.

To install dependencies and the codespeed Django app:

pip install codespeed

If you want version control integration, there are additional requirements:

Note: For git or mercurial repos, the first time the changes view is accessed, Codespeed will try to clone the repo, which depending on the size of the project can take a long time. Please be patient.

The codespeed installation can now be accessed by navigating to http://localhost:8000/.

Note: for production, you should configure a real server like Apache or nginx (refer to the Django docs). You should also modify sample_project/settings.py and set DEBUG = False. sample_project/README.md also describes some production settings.

Codespeed configuration

Using the provided test data

If you want to test drive Codespeed, you can use the testdata.json fixtures to have a working data set to browse.

Starting from scratch

Before you can start saving (and displaying) data, you need to first create an environment and define a default project.

Check the field "Track changes" and, in case you want version control integration, configure the relevant fields.

Note: Only executables associated to projects with a checked "track changes" field will be shown in the Changes and Timeline views.

Note: Git and Mercurial need to locally clone the repository. That means that your sample_project/repos directory will need to be owned by the server. In the case of a typical Apache installation, you'll need to type sudo chown www-data:www-data sample_project/repos

Saving data

Data is saved POSTing to http://localhost:8000/result/add/.

You can use the script tools/save_single_result.py as a guide. When saving large quantities of data, it is recommended to use the JSON API instead: http://localhost:8000/result/add/json/

An example script is located at tools/save_multiple_results.py

Note: If the given executable, benchmark, project, or revision do not yet exist, they will be automatically created, together with the actual result entry. The only model which won't be created automatically is the environment. It must always exist or the data won't be saved (that is the reason it is described as a necessary step in the previous "Codespeed configuration" section).

Further customization

Custom Settings

You may override any of the default settings by setting them in sample_project/settings.py. It is strongly recommended that you only override the settings you need by importing the default settings and replacing only the values needed for your customizations:

from codespeed.settings import *

DEF_ENVIRONMENT = "Dual Core 64 bits"

Site-wide Changes

All pages inherit from the base.html template. To change every page on the site simply edit (sample_project/templates/codespeed/base_site.html) and override the appropriate block:

Specific Pages

Since sample_project/templates/codespeed is the first entry in settings.TEMPLATE_DIRS you may override any template on the site simply by creating a new one with the same name.

Baselines and Comparison view executables

Defaults

The file sample_project/settings.py can contain customizations of several parameters (the file includes comments with full examples).

General settings

Home Page

The main customization for the homepage is to display either the reports (daily changes) or the historical graphs (improvement over time).

Changes View

Timeline View

Comparison View

COMP_EXECUTABLES = [
    ('myexe', '21df2423ra'),
    ('myexe', 'L'),
]

VCS Provider Specific Settings

Github

Getting help

For help regarding the configuration of Codespeed, or to share any ideas or suggestions you may have, please post on Codespeed's discussion group

Reporting bugs

If you find any bug in Codespeed please report it on the Github issue tracker