Skip to content

Commit 9621c6f

Browse files
committed
pylcm: publish benchmarks for a7880a686c01 (machine: 3c4fb8e3)
1 parent 25d0a95 commit 9621c6f

4 files changed

Lines changed: 842 additions & 10 deletions

File tree

pylcm-benchmarks/dev/bench/data.js

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,111 @@ window.BENCHMARK_DATA = {
413413
"extra": "rounds: 6, min: 0.162452, max: 0.178763"
414414
}
415415
]
416+
},
417+
{
418+
"commit": {
419+
"id": "a7880a686c01e717e7f52a5a6eb66500a0619977",
420+
"message": "",
421+
"timestamp": "2026-03-17T06:21:12+01:00",
422+
"author": {
423+
"name": "",
424+
"email": ""
425+
}
426+
},
427+
"date": 1773724872000,
428+
"benches": [
429+
{
430+
"name": "test_grid_lookup[lin-500]",
431+
"unit": "s",
432+
"value": 0.13749315112545446,
433+
"range": "\u00b1 0.015851",
434+
"extra": "rounds: 8, min: 0.122898, max: 0.164274"
435+
},
436+
{
437+
"name": "test_grid_lookup[lin-1000]",
438+
"unit": "s",
439+
"value": 0.12763316228665644,
440+
"range": "\u00b1 0.004588",
441+
"extra": "rounds: 7, min: 0.123092, max: 0.136270"
442+
},
443+
{
444+
"name": "test_grid_lookup[lin-2000]",
445+
"unit": "s",
446+
"value": 0.14781201285638548,
447+
"range": "\u00b1 0.014751",
448+
"extra": "rounds: 7, min: 0.128769, max: 0.164941"
449+
},
450+
{
451+
"name": "test_grid_lookup[irreg-500]",
452+
"unit": "s",
453+
"value": 0.16129313014243962,
454+
"range": "\u00b1 0.003586",
455+
"extra": "rounds: 7, min: 0.155967, max: 0.165695"
456+
},
457+
{
458+
"name": "test_grid_lookup[irreg-1000]",
459+
"unit": "s",
460+
"value": 0.16840827600026387,
461+
"range": "\u00b1 0.008165",
462+
"extra": "rounds: 6, min: 0.156663, max: 0.177088"
463+
},
464+
{
465+
"name": "test_grid_lookup[irreg-2000]",
466+
"unit": "s",
467+
"value": 0.23960360099881656,
468+
"range": "\u00b1 0.010098",
469+
"extra": "rounds: 5, min: 0.231310, max: 0.256220"
470+
},
471+
{
472+
"name": "test_mahler_yum_2024",
473+
"unit": "s",
474+
"value": 4.0224362912020295,
475+
"range": "\u00b1 0.031470",
476+
"extra": "rounds: 5, min: 3.980430, max: 4.068864"
477+
},
478+
{
479+
"name": "test_simulate[1000]",
480+
"unit": "s",
481+
"value": 0.47190196640003707,
482+
"range": "\u00b1 0.023228",
483+
"extra": "rounds: 5, min: 0.454453, max: 0.511410"
484+
},
485+
{
486+
"name": "test_simulate[10000]",
487+
"unit": "s",
488+
"value": 3.257966672600014,
489+
"range": "\u00b1 0.210219",
490+
"extra": "rounds: 5, min: 2.899043, max: 3.449180"
491+
},
492+
{
493+
"name": "test_solve[50]",
494+
"unit": "s",
495+
"value": 0.023483304479213984,
496+
"range": "\u00b1 0.002351",
497+
"extra": "rounds: 48, min: 0.019677, max: 0.029366"
498+
},
499+
{
500+
"name": "test_solve[200]",
501+
"unit": "s",
502+
"value": 0.02343835269200029,
503+
"range": "\u00b1 0.001612",
504+
"extra": "rounds: 52, min: 0.020510, max: 0.026458"
505+
},
506+
{
507+
"name": "test_solve[500]",
508+
"unit": "s",
509+
"value": 0.023627240893138397,
510+
"range": "\u00b1 0.002499",
511+
"extra": "rounds: 37, min: 0.019331, max: 0.031301"
512+
},
513+
{
514+
"name": "test_mortality",
515+
"unit": "s",
516+
"value": 0.19661711880035,
517+
"range": "\u00b1 0.005736",
518+
"extra": "rounds: 5, min: 0.190841, max: 0.206028"
519+
}
520+
]
416521
}
417522
]
418523
}

pylcm-benchmarks/index.html

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
details { margin: 0.5rem 0; }
1414
summary { cursor: pointer; font-weight: 600; }
1515
p.meta { color: #666; font-size: 0.9rem; }
16+
p.subtitle { color: #888; font-size: 0.85rem; margin: 0.2rem 0 0.5rem; }
1617
</style>
1718
</head>
1819
<body>
@@ -28,6 +29,20 @@ <h1>PyLCM Benchmarks</h1>
2829
'<p>No benchmark data available yet.</p>';
2930
return;
3031
}
32+
var GH = 'https://github.com/OpenSourceEconomics/pylcm/commit/';
33+
var DESCRIPTIONS = {
34+
'test_solve': 'Precautionary savings model \u2014 solve only',
35+
'test_grid_lookup': 'Precautionary savings \u2014 lin vs irreg grids',
36+
'test_simulate': 'Precautionary savings model \u2014 simulation only',
37+
'test_mortality': 'Mortality model',
38+
'test_mahler_yum_2024': 'Mahler & Yum (2024) replication'
39+
};
40+
function formatTitle(group) {
41+
var s = group.replace(/^test_/, '');
42+
return s.replace(/(^|_)([a-z0-9])/g, function(m, sep, ch) {
43+
return (sep ? ' ' : '') + ch.toUpperCase();
44+
});
45+
}
3146
var box = document.getElementById('charts');
3247
Object.keys(data.entries).forEach(function(suite) {
3348
var entries = data.entries[suite];
@@ -48,21 +63,26 @@ <h1>PyLCM Benchmarks</h1>
4863
var det = document.createElement('details');
4964
det.open = true;
5065
var sum = document.createElement('summary');
51-
sum.textContent = group;
66+
sum.textContent = formatTitle(group);
5267
det.appendChild(sum);
68+
if (DESCRIPTIONS[group]) {
69+
var sub = document.createElement('p');
70+
sub.className = 'subtitle';
71+
sub.textContent = DESCRIPTIONS[group];
72+
det.appendChild(sub);
73+
}
5374
var div = document.createElement('div');
5475
div.className = 'chart-box';
5576
var cv = document.createElement('canvas');
5677
div.appendChild(cv);
5778
det.appendChild(div);
5879
box.appendChild(det);
59-
var GH = 'https://github.com/OpenSourceEconomics/pylcm/commit/';
60-
var labels = entries.map(function(e) {
61-
return e.commit.id ? e.commit.id.slice(0, 8) : '?';
62-
});
6380
var commitIds = entries.map(function(e) {
6481
return e.commit.id || '';
6582
});
83+
var labels = commitIds.map(function(id) {
84+
return id ? id.slice(0, 8) : '?';
85+
});
6686
var ds = gNames.map(function(name, i) {
6787
var hue = (i * 360 / gNames.length) % 360;
6888
return {
@@ -84,11 +104,20 @@ <h1>PyLCM Benchmarks</h1>
84104
options: {
85105
responsive: true,
86106
onClick: function(evt, elems, chart) {
87-
var pts = chart.getElementsAtEventForMode(
88-
evt, 'index', { intersect: false }, false
89-
);
90-
if (pts.length > 0) {
91-
var idx = pts[0].index;
107+
var rect = cv.getBoundingClientRect();
108+
var x = evt.native.clientX - rect.left;
109+
var y = evt.native.clientY - rect.top;
110+
var xScale = chart.scales.x;
111+
var idx;
112+
if (y >= xScale.top) {
113+
idx = xScale.getValueForPixel(x);
114+
} else {
115+
var pts = chart.getElementsAtEventForMode(
116+
evt, 'index', { intersect: false }, false
117+
);
118+
if (pts.length > 0) idx = pts[0].index;
119+
}
120+
if (idx != null && idx >= 0 && idx < commitIds.length) {
92121
var sha = commitIds[idx];
93122
if (sha) window.open(GH + sha, '_blank');
94123
}
@@ -113,6 +142,13 @@ <h1>PyLCM Benchmarks</h1>
113142
}
114143
},
115144
onHover: function(evt, elems, chart) {
145+
var rect = cv.getBoundingClientRect();
146+
var y = evt.native.clientY - rect.top;
147+
var xScale = chart.scales.x;
148+
if (y >= xScale.top) {
149+
cv.style.cursor = 'pointer';
150+
return;
151+
}
116152
var pts = chart.getElementsAtEventForMode(
117153
evt, 'index', { intersect: false }, false
118154
);

0 commit comments

Comments
 (0)