mirror of
https://github.com/multipleof4/lynchmark.git
synced 2026-03-17 03:11:01 +00:00
Refactor: Remove stale benchmark outputs
This commit is contained in:
@@ -1,47 +0,0 @@
|
||||
async function processCSV(csv, cfg) {
|
||||
cfg ||= {};
|
||||
let {
|
||||
filterColumn,
|
||||
filterValue,
|
||||
groupBy,
|
||||
aggregateColumn,
|
||||
operation
|
||||
} = cfg;
|
||||
|
||||
if (typeof csv != "string" || !groupBy || !operation) return [];
|
||||
|
||||
let [{ default: Papa }, { rollups }] = await Promise.all([
|
||||
import("https://esm.sh/papaparse@5.4.1"),
|
||||
import("https://esm.sh/d3-array@3.2.4")
|
||||
]);
|
||||
|
||||
let parsed = Papa.parse(csv, { header: true, skipEmptyLines: true });
|
||||
if (parsed.errors?.length) throw new Error(parsed.errors[0].message || "CSV parse error");
|
||||
|
||||
let rows = parsed.data || [];
|
||||
if (filterColumn != null) rows = rows.filter(r => r?.[filterColumn] == filterValue);
|
||||
|
||||
let num = v => {
|
||||
v = Number(v);
|
||||
return Number.isFinite(v) ? v : 0;
|
||||
};
|
||||
|
||||
let agg = op => {
|
||||
if (op === "count") return v => v.length;
|
||||
|
||||
let sum = v => {
|
||||
let s = 0;
|
||||
for (let i = 0; i < v.length; i++) s += num(v[i]?.[aggregateColumn]);
|
||||
return s;
|
||||
};
|
||||
|
||||
if (op === "avg") return v => v.length ? sum(v) / v.length : 0;
|
||||
return v => sum(v);
|
||||
};
|
||||
|
||||
let reduce = agg(operation);
|
||||
return rollups(rows, reduce, d => d?.[groupBy]).map(([k, result]) => ({ [groupBy]: k, result }));
|
||||
}
|
||||
export default processCSV;
|
||||
// Generation time: 22.087s
|
||||
// Result: PASS
|
||||
@@ -1,24 +0,0 @@
|
||||
async function processCSV(csv, cfg) {
|
||||
const [{csvParse}] = await Promise.all([
|
||||
import('https://cdn.skypack.dev/d3-dsv')
|
||||
]);
|
||||
const _ = await import('https://cdn.skypack.dev/lodash');
|
||||
|
||||
const rows = csvParse(csv);
|
||||
const filtered = rows.filter(r => r[cfg.filterColumn] == cfg.filterValue);
|
||||
const groups = _.groupBy(filtered, cfg.groupBy);
|
||||
|
||||
return Object.entries(groups).map(([k, g]) => {
|
||||
let res;
|
||||
if (cfg.operation === 'count') {
|
||||
res = g.length;
|
||||
} else {
|
||||
const sum = g.reduce((s, r) => s + (Number(r[cfg.aggregateColumn]) || 0), 0);
|
||||
res = cfg.operation === 'sum' ? sum : sum / g.length;
|
||||
}
|
||||
return { [cfg.groupBy]: k, result: res };
|
||||
});
|
||||
}
|
||||
export default processCSV;
|
||||
// Generation time: 1.891s
|
||||
// Result: PASS
|
||||
@@ -1,18 +0,0 @@
|
||||
const processCSV = async (csv, { filterColumn: fc, filterValue: fv, groupBy: gb, aggregateColumn: ac, operation: op }) => {
|
||||
const { default: Papa } = await import('https://esm.run/papaparse')
|
||||
const { data } = Papa.parse(csv, { header: true })
|
||||
const grouped = data.filter(r => r[fc] == fv).reduce((a, r) => {
|
||||
const k = r[gb], v = +r[ac] || 0
|
||||
a[k] = a[k] || { s: 0, c: 0 }
|
||||
a[k].s += v
|
||||
a[k].c++
|
||||
return a
|
||||
}, {})
|
||||
return Object.entries(grouped).map(([k, { s, c }]) => ({
|
||||
[gb]: k,
|
||||
result: op === 'count' ? c : op === 'sum' ? s : s / c
|
||||
}))
|
||||
}
|
||||
export default processCSV;
|
||||
// Generation time: 257.221s
|
||||
// Result: PASS
|
||||
Reference in New Issue
Block a user