Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion codespeed/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ def embed_comparison(request):

@require_GET
def gethistoricaldata(request):
data = {'results': {}, 'benchmarks': []}
# 'labels' maps each key in tagged_revs (plus baseline and 'latest') to
# a two-line label [tag, project] for the x axis of the history chart.
data = {'results': {}, 'benchmarks': [], 'labels': {}}
env = Environment.objects.all()
if settings.DEF_ENVIRONMENT:
env = env.get(name=settings.DEF_ENVIRONMENT)
Expand All @@ -134,6 +136,7 @@ def gethistoricaldata(request):
)
rev0 = rev[0]
resname = '{} {}'.format(b['executable'], rev0.tag)
data['labels'][resname] = [rev0.tag, baseline_exe.project.name]
baseline_results.append((resname, Result.objects.filter(
executable=baseline_exe, revision=rev0, environment=env,
benchmark__source='legacy')))
Expand Down Expand Up @@ -165,12 +168,14 @@ def gethistoricaldata(request):
logger.info("no results for '%s' '%s' '%s'" % (str(_default_exe), str(rev), str(env)))
continue
default_results[rev.tag] = res
data['labels'][rev.tag] = [rev.tag, _default_exe.project.name]
data['tagged_revs'] = [rev.tag for rev in all_taggedrevs if rev.tag in default_results]
# Fetch data for latest results
executable = settings.DEF_EXECUTABLES[0]
def_name = executable['name']
def_project = Project.objects.get(name=executable['project'])
default_exe = Executable.objects.get(name=def_name, project=def_project)
data['labels']['latest'] = ['latest', default_exe.project.name]
default_branch = Branch.objects.get(
name=default_exe.project.default_branch,
project=default_exe.project)
Expand Down
1 change: 1 addition & 0 deletions speed_pypy/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@
{'executable': 'cpython', 'revision': '3.11.15'},
]
DEF_EXECUTABLES = [
{'name': 'pypy3.12-jit-64', 'project': 'PyPy3.12'},
{'name': 'pypy3.11-jit-64', 'project': 'PyPy3.11'},
]
DEF_ENVIRONMENT = 'benchmarker2'
Expand Down
6 changes: 4 additions & 2 deletions speed_pypy/templates/embed_comparison.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>PyPy vs CPython benchmark comparison</title>
<style>
html, body { margin: 0; padding: 0; background: transparent; }
html, body { margin: 0; padding: 0; background: transparent; height: 100%; overflow: hidden; }
/* Fill the embedding iframe so the rotated benchmark labels are never
clipped: the host page controls the height via the iframe. */
#baseline-comparison-plot {
position: relative;
width: 100%;
height: 480px;
height: 100vh;
font-family: sans-serif;
}
</style>
Expand Down
10 changes: 6 additions & 4 deletions speed_pypy/templates/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ <h2>Comparison</h2>
<h3>How fast is {{ default_exe.project }}?</h3>
<iframe src="{% url 'embed-comparison' %}"
title="{{ default_exe.project }} ({{ default_exe }}) vs {{ baseline }} benchmark comparison"
style="border:0;width:100%;height:400px"
style="border:0;width:100%;height:480px"
loading="lazy"></iframe>
<p class="plot-caption">Plot 1: The above plot represents {{ default_exe.project }} ({{ default_exe }}) benchmark times normalized to {{ baseline }}. Smaller is better.</p>
<p>It depends greatly on the type of task being performed. The geometric average of all benchmarks is <span id="geomean"></span> or <strong id="geofaster"></strong> times <em>faster</em> than {{ baseline }}</p>
Expand Down Expand Up @@ -120,9 +120,11 @@ <h3>How has PyPy performance evolved over time?</h3>
geomeans.push(1 / trunk_geomean);
$('#num_of_benchs').html(num_of_benchs);

var ticks2 = [data['baseline']];
for (var i in data['tagged_revs']) { ticks2.push(data['tagged_revs'][i]); }
ticks2.push('latest {{ default_exe.project }}');
// Two-line labels: [tag, project]; fall back to the key itself.
var labelFor = function(key) { return (data['labels'] || {})[key] || key; };
var ticks2 = [labelFor(data['baseline'])];
for (var i in data['tagged_revs']) { ticks2.push(labelFor(data['tagged_revs'][i])); }
ticks2.push(labelFor('latest'));

var wrap2 = document.getElementById('historical-plot');
var canvas2 = document.createElement('canvas');
Expand Down
Loading