1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /** Sync Markdown files in /bench based on the data from bench.json */
- import { BenchData, Markdown } from "./utils";
- (async () => {
- const bench = await BenchData.open();
- await BenchData.forEachMarkdown((markdown, fileName) => {
- if (fileName === "COMPUTE_UNITS.md") {
- 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];
- const nextVersion = versions[+i + 1];
- if (currentVersion === "unreleased") {
- return;
- }
- const newData = bench.get(nextVersion);
- const oldData = bench.get(currentVersion);
- // Create table
- const table = Markdown.createTable(
- "Instruction",
- "Compute Units",
- "+/-"
- );
- bench.compareComputeUnits(
- newData.result.computeUnits,
- oldData.result.computeUnits,
- ({ ixName, newComputeUnits, oldComputeUnits }) => {
- if (newComputeUnits === null) {
- // Deleted instruction
- return;
- }
- let changeText;
- if (oldComputeUnits === null) {
- // New instruction
- changeText = "N/A";
- } else {
- const delta = newComputeUnits - oldComputeUnits;
- const percentChange = (
- (newComputeUnits / oldComputeUnits - 1) *
- 100
- ).toFixed(2);
- if (+percentChange > 0) {
- changeText = `🔴 **+${delta} (${percentChange}%)**`;
- } else {
- changeText = `🟢 **${delta} (${percentChange.slice(1)}%)**`;
- }
- }
- table.insert(ixName, newComputeUnits.toString(), changeText);
- },
- (ixName, computeUnits) => {
- table.insert(
- ixName,
- computeUnits.toString(),
- +i === 0 ? "N/A" : "-"
- );
- }
- );
- // Update version data
- markdown.updateVersion({
- version: nextVersion,
- solanaVersion: newData.solanaVersion,
- table,
- });
- }
- }
- });
- })();
|