123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- /** Sync Markdown files in /bench based on the data from bench.json */
- import { BenchData, BenchResult, Markdown, formatNumber } from "./utils";
- (async () => {
- const bench = await BenchData.open();
- await BenchData.forEachMarkdown((markdown, fileName) => {
- const resultType = fileName
- .toLowerCase()
- .replace(".md", "")
- .replace(/_\w/g, (match) => match[1].toUpperCase()) as keyof BenchResult;
- const versions = bench.getVersions();
- // On the first version, compare with itself to update it with no changes
- versions.unshift(versions[0]);
- for (const i in versions) {
- const currentVersion = versions[i];
- if (currentVersion === "unreleased") return;
- const nextVersion = versions[+i + 1];
- const newData = bench.get(nextVersion);
- const oldData = bench.get(currentVersion);
- // Create table
- const table = Markdown.createTable();
- bench.compare({
- newResult: newData.result[resultType],
- oldResult: oldData.result[resultType],
- changeCb: ({ name, newValue, oldValue }) => {
- if (newValue === null) {
- // Deleted key
- return;
- }
- let changeText: string;
- if (oldValue === null) {
- // New key
- changeText = "N/A";
- } else {
- const delta = formatNumber(newValue - oldValue);
- const percentChange = ((newValue / oldValue - 1) * 100).toFixed(2);
- if (+percentChange > 0) {
- changeText = `🔴 **+${delta} (${percentChange}%)**`;
- } else {
- changeText = `🟢 **${delta} (${percentChange.slice(1)}%)**`;
- }
- }
- table.insert(name, formatNumber(newValue), changeText);
- },
- noChangeCb: ({ name, value }) => {
- table.insert(name, formatNumber(value), +i === 0 ? "N/A" : "-");
- },
- });
- // Update version data
- markdown.updateVersion({
- version: nextVersion,
- solanaVersion: newData.solanaVersion,
- table,
- });
- }
- });
- })();
|