mirror of
https://github.com/Art051/it-tools.git
synced 2025-08-11 19:29:03 +00:00
feat(new-tool): simple benchmark calculator
This commit is contained in:
committed by
Corentin THOMASSET
parent
004cb83719
commit
6e84ea4061
34
src/tools/benchmark-builder/benchmark-builder.models.ts
Normal file
34
src/tools/benchmark-builder/benchmark-builder.models.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
export { computeAverage, computeVariance, arrayToMarkdownTable };
|
||||
|
||||
function computeAverage({ data }: { data: number[] }) {
|
||||
if (data.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return _.sum(data) / data.length;
|
||||
}
|
||||
|
||||
function computeVariance({ data }: { data: number[] }) {
|
||||
const mean = computeAverage({ data });
|
||||
|
||||
const squaredDiffs = data.map((value) => Math.pow(value - mean, 2));
|
||||
|
||||
return computeAverage({ data: squaredDiffs });
|
||||
}
|
||||
|
||||
function arrayToMarkdownTable({ data, headerMap = {} }: { data: unknown[]; headerMap?: Record<string, string> }) {
|
||||
if (!Array.isArray(data) || data.length === 0) {
|
||||
return '';
|
||||
}
|
||||
|
||||
const headers = Object.keys(data[0]);
|
||||
const rows = data.map((obj) => Object.values(obj));
|
||||
|
||||
const headerRow = `| ${headers.map((header) => headerMap[header] ?? header).join(' | ')} |`;
|
||||
const separatorRow = `| ${headers.map(() => '---').join(' | ')} |`;
|
||||
const dataRows = rows.map((row) => `| ${row.join(' | ')} |`).join('\n');
|
||||
|
||||
return `${headerRow}\n${separatorRow}\n${dataRows}`;
|
||||
}
|
||||
Reference in New Issue
Block a user