mirror of
https://github.com/lynchmarkHQ/lynchmark.com.git
synced 2026-10-17 09:17:53 +00:00
Docs: Update benchmark results
This commit is contained in:
@@ -1,19 +1,27 @@
|
||||
async function processCSV(csvString,config){
|
||||
const{default:Papa}=await import('https://esm.sh/papaparse');
|
||||
const{filterColumn:fc,filterValue:fv,groupBy:gb,aggregateColumn:ac,operation:op}=config;
|
||||
const parsed=Papa.parse(csvString,{header:true}).data;
|
||||
const filtered=parsed.filter(r=>r[fc]==fv);
|
||||
const groups=filtered.reduce((acc,r)=>{
|
||||
const k=r[gb];
|
||||
const v=Number(r[ac])||0;
|
||||
if(!acc[k])acc[k]={s:0,c:0};
|
||||
acc[k].s+=v;
|
||||
acc[k].c++;
|
||||
return acc;
|
||||
},{});
|
||||
return Object.entries(groups).map(([k,g])=>{
|
||||
const res=op==='count'?g.c:op==='sum'?g.s:g.s/g.c;
|
||||
return{[gb]:k,result:res};
|
||||
});
|
||||
async function processCSV(csv,{filterColumn,filterValue,groupBy,aggregateColumn,operation}){
|
||||
const Papa=(await import('https://cdn.jsdelivr.net/npm/papaparse@5/+esm')).default;
|
||||
const{data}=Papa.parse(csv,{header:true,skipEmptyLines:true});
|
||||
const groups=new Map();
|
||||
for(const row of data){
|
||||
if(row[filterColumn]==filterValue){
|
||||
const key=row[groupBy];
|
||||
const val=Number(row[aggregateColumn])||0;
|
||||
const g=groups.get(key)||{sum:0,count:0};
|
||||
g.sum+=val;
|
||||
g.count++;
|
||||
groups.set(key,g);
|
||||
}
|
||||
}
|
||||
const result=[];
|
||||
for(const[key,g]of groups){
|
||||
let res;
|
||||
switch(operation){
|
||||
case'sum':res=g.sum;break;
|
||||
case'avg':res=g.sum/g.count;break;
|
||||
case'count':res=g.count;break;
|
||||
}
|
||||
result.push({[groupBy]:key,result:res});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
export default processCSV;
|
||||
Reference in New Issue
Block a user