MCPcopy Create free account
hub / github.com/csskit/csskit / createCompressionChart

Function createCompressionChart

website/script/benchmarks.js:570–686  ·  view source on GitHub ↗
(entries)

Source from the content-addressed store, hash-verified

568}
569
570function createCompressionChart(entries) {
571 const chartElement = document.getElementById("compression-chart");
572 if (!chartElement) return;
573
574 const allFiles = Object.keys(entries[0].hyperfine_results);
575
576 function buildSeries(sampledEntries) {
577 return allFiles
578 .map((file) => {
579 const dataPoints = sampledEntries
580 .map((entry) => {
581 const fileData = entry.hyperfine_results[file];
582 if (fileData && fileData.compression_ratio && fileData.output_size > 0) {
583 const compressionPercent = (1 - fileData.compression_ratio) * 100;
584 return {
585 x: new Date(entry.timestamp).getTime(),
586 y: Math.round(compressionPercent * 10) / 10,
587 };
588 }
589 return null;
590 })
591 .filter((point) => point !== null);
592 return {
593 name: file.replace(/\./g, " ").replace(/-/g, " "),
594 data: dataPoints,
595 };
596 })
597 .filter((s) => s.data.length > 0);
598 }
599
600 const sampled = sampleEntries(entries);
601 const series = buildSeries(sampled);
602
603 let allValues = [];
604 series.forEach((s) => s.data.forEach((point) => allValues.push(point.y)));
605
606 const { outliers, normal } = detectOutliers(allValues);
607 const hasOutliers = outliers.length > 0;
608
609 const normalSeries = [];
610 const outlierSeries = [];
611 series.forEach((s) => {
612 const validValues = s.data.filter((p) => p !== null);
613 const avgValue = validValues.length > 0 ? validValues.reduce((sum, p) => sum + p.y, 0) / validValues.length : 0;
614 if (outliers.includes(avgValue) || s.data.some((p) => p !== null && outliers.includes(p.y))) {
615 outlierSeries.push(s);
616 } else {
617 normalSeries.push(s);
618 }
619 });
620
621 function buildNormalSeries(e) {
622 return buildSeries(e).filter((s) => normalSeries.some((ns) => ns.name === s.name));
623 }
624 function buildOutlierSeries(e) {
625 return buildSeries(e).filter((s) => outlierSeries.some((os) => os.name === s.name));
626 }
627

Callers 1

initializeChartsFunction · 0.85

Calls 7

sampleEntriesFunction · 0.85
buildSeriesFunction · 0.85
detectOutliersFunction · 0.85
getBaseChartConfigFunction · 0.85
buildZoomEventsFunction · 0.85
sampledTimeRangeFunction · 0.85
renderMethod · 0.80

Tested by

no test coverage detected