mirror of
https://github.com/django-components/django-components.git
synced 2025-08-03 22:08:17 +00:00
feat: benchmarking (#999)
* feat: add benchmarking dashboard, CI hook on PR, and store lifetime results * refactor: change python env to 3.13 in benchmarks * refactor: add verbosity, use 3.11 for benchmarking * fix: OSError: [Errno 7] Argument list too long * refactor: add debug statements * refactor: remove extraneous -e * refactor: fix tests and linter errors * fix: track main package in coverage * refactor: fix test coverage testing * refactor: fix repo owner name in benchmark on pushing comment * refactor: add asv monkeypatch to docs workflow * refactor: temporarily allow building docs in forks * refactor: use py 3.13 for benchmarking * refactor: run only a single benchmark for PRs to speed them up * refactor: install asv in the docs build workflow * refactor: use hatch docs env to generate benhcmarks in docs CI * refactor: more trying * refactor: move tests * Add benchmark results for 0.137 * Trigger Build * Add benchmark results for 0.138 * refactor: set constant machine name when benchmarking * Add benchmark results for 0.139 * refactor: fix issue with paths too long * Add benchmark results for 0.140 * docs: update comment * refactor: remove test benchmarking data * refactor: fix comment * refactor: allow the benchmark workflow to write to PRs * refactor: use personal access token to set up the PR benchmark bot * refactor: split the benchmark PR flow into two to make it work with PRs from forks * refactor: update deprecated actions/upload-artifact@v3 to v4 * refactor: fix missing directory in benchmarking workflow * refactor: fix triggering of second workflow * refactor: fix workflow finally? * docs: add comments to cut-offs and direct people to benchmarks PR --------- Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
parent
dcd4203eea
commit
f36581ed86
90 changed files with 40817 additions and 443 deletions
136
docs/benchmarks/summarygrid.js
Normal file
136
docs/benchmarks/summarygrid.js
Normal file
|
@ -0,0 +1,136 @@
|
|||
'use strict';
|
||||
|
||||
$(document).ready(function() {
|
||||
var summary_loaded = false;
|
||||
|
||||
/* Callback a function when an element comes in view */
|
||||
function callback_in_view(element, func) {
|
||||
function handler(evt) {
|
||||
var visible = (
|
||||
$('#summarygrid-display').css('display') != 'none' &&
|
||||
(element.offset().top <= $(window).height() + $(window).scrollTop()) &&
|
||||
(element.offset().top + element.height() >= $(window).scrollTop()));
|
||||
if (visible) {
|
||||
func();
|
||||
$(window).off('scroll', handler);
|
||||
}
|
||||
}
|
||||
$(window).on('scroll', handler);
|
||||
}
|
||||
|
||||
function get_benchmarks_by_groups() {
|
||||
var main_json = $.asv.main_json;
|
||||
var groups = {};
|
||||
$.each(main_json.benchmarks, function(bm_name, bm) {
|
||||
var i = bm_name.indexOf('.');
|
||||
var group = bm_name.slice(0, i);
|
||||
var name = bm_name.slice(i + 1);
|
||||
if (groups[group] === undefined) {
|
||||
groups[group] = [];
|
||||
}
|
||||
groups[group].push(bm_name);
|
||||
});
|
||||
return groups;
|
||||
}
|
||||
|
||||
function benchmark_container(bm) {
|
||||
var container = $(
|
||||
'<a class="btn benchmark-container" href="#' + bm.name +
|
||||
'"/>');
|
||||
var plot_div = $(
|
||||
'<div id="summarygrid-' + bm.name + '" class="benchmark-plot"/>');
|
||||
var display_name = bm.pretty_name || bm.name.slice(bm.name.indexOf('.') + 1);
|
||||
var name = $('<div class="benchmark-text">' + display_name + '</div>');
|
||||
name.tooltip({
|
||||
title: bm.name,
|
||||
html: true,
|
||||
placement: 'top',
|
||||
container: 'body',
|
||||
animation: false
|
||||
});
|
||||
|
||||
plot_div.tooltip({
|
||||
title: bm.code,
|
||||
html: true,
|
||||
placement: 'bottom',
|
||||
container: 'body',
|
||||
animation: false
|
||||
});
|
||||
|
||||
container.append(name);
|
||||
container.append(plot_div);
|
||||
|
||||
callback_in_view(plot_div, function() {
|
||||
$.asv.load_graph_data(
|
||||
'graphs/summary/' + bm.name + '.json'
|
||||
).done(function(data) {
|
||||
var options = {
|
||||
colors: $.asv.colors,
|
||||
series: {
|
||||
lines: {
|
||||
show: true,
|
||||
lineWidth: 2
|
||||
},
|
||||
shadowSize: 0
|
||||
},
|
||||
grid: {
|
||||
borderWidth: 1,
|
||||
margin: 0,
|
||||
labelMargin: 0,
|
||||
axisMargin: 0,
|
||||
minBorderMargin: 0
|
||||
},
|
||||
xaxis: {
|
||||
ticks: [],
|
||||
},
|
||||
yaxis: {
|
||||
ticks: [],
|
||||
min: 0
|
||||
},
|
||||
legend: {
|
||||
show: false
|
||||
}
|
||||
};
|
||||
|
||||
var plot = $.plot(
|
||||
plot_div, [{data: data}], options);
|
||||
}).fail(function() {
|
||||
// TODO: Handle failure
|
||||
});
|
||||
});
|
||||
return container;
|
||||
}
|
||||
|
||||
function make_summary() {
|
||||
var summary_display = $('#summarygrid-display');
|
||||
var main_json = $.asv.main_json;
|
||||
var summary_container = $('<div/>');
|
||||
|
||||
if (summary_loaded) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.each(get_benchmarks_by_groups(), function(group, benchmarks) {
|
||||
var group_container = $('<div class="benchmark-group"/>')
|
||||
group_container.attr('id', 'group-' + group)
|
||||
group_container.append($('<h1>' + group + '</h1>'));
|
||||
summary_display.append(group_container);
|
||||
$.each(benchmarks, function(i, bm_name) {
|
||||
var bm = $.asv.main_json.benchmarks[bm_name];
|
||||
group_container.append(benchmark_container(bm));
|
||||
});
|
||||
});
|
||||
|
||||
summary_display.append(summary_container);
|
||||
$(window).trigger('scroll');
|
||||
|
||||
summary_loaded = true;
|
||||
}
|
||||
|
||||
$.asv.register_page('', function(params) {
|
||||
$('#summarygrid-display').show();
|
||||
$("#title").text("All benchmarks");
|
||||
$('.tooltip').remove();
|
||||
make_summary();
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue