Luigit
repositories / pi-ext

pi-ext

bugabingas pi extensions

owned by admin

extensions/footer/__bench__/render.bench.ts

Raw
import { cpus } from "node:os";
import type {
	ExtensionAPI,
	ExtensionContext,
	Theme,
} from "@earendil-works/pi-coding-agent";
import footerExtension from "../index.ts";

const ROUNDS = 12;
const MINIMUM_ROUND_NS = 200_000_000;
const WIDE_COLUMNS = 160;
const NARROW_COLUMNS = 72;

const handlers = new Map<string, Array<(data: unknown) => void>>();
let footer: { render(width: number): string[]; dispose?(): void } | undefined;
let sink = 0;

const theme = {
	fg: (_color: string, text: string) => `\x1b[38;5;245m${text}\x1b[39m`,
	getFgAnsi: () => "\x1b[38;5;245m",
} as Theme;
const statuses = new Map([
	["mode", "review"],
	["queue", "2 queued"],
]);
const footerData = {
	getExtensionStatuses: () => statuses,
	onBranchChange: () => () => {},
};
const tui = {
	requestRender: () => {
		sink ^= 1;
	},
};
const ui = {
	setFooter: (factory: unknown) => {
		footer?.dispose?.();
		footer = (
			factory as (
				tui: typeof tui,
				theme: Theme,
				data: typeof footerData,
			) => typeof footer
		)(tui, theme, footerData);
	},
	notify: () => {},
};
const pi = {
	events: {
		on: (name: string, handler: (data: unknown) => void) => {
			handlers.set(name, [...(handlers.get(name) ?? []), handler]);
		},
		emit: (name: string, data: unknown) => {
			for (const handler of handlers.get(name) ?? []) handler(data);
		},
	},
	on: (
		name: string,
		handler: (event: unknown, ctx: ExtensionContext) => void,
	) => {
		handlers.set(name, [
			...(handlers.get(name) ?? []),
			(data) => handler(data, context),
		]);
	},
	registerCommand: () => {},
	registerShortcut: () => {},
} as unknown as ExtensionAPI;
const context = {
	hasUI: true,
	mode: "tui",
	ui,
	sessionManager: { getSessionName: () => "footer performance" },
} as unknown as ExtensionContext;

function emit(name: string, data: unknown): void {
	for (const handler of handlers.get(name) ?? []) handler(data);
}

function segment(data: Record<string, unknown>): void {
	emit("footer:segment", data);
}

function consume(lines: string[]): void {
	sink ^= lines.length;
	for (const line of lines) sink ^= line.length;
}

function render(width: number): void {
	if (!footer) throw new Error("footer did not mount");
	consume(footer.render(width));
}

function benchmark(name: string, operation: () => void): void {
	for (let index = 0; index < 3; index++) operation();
	let iterations = 1;
	while (true) {
		const started = process.hrtime.bigint();
		for (let index = 0; index < iterations; index++) operation();
		if (Number(process.hrtime.bigint() - started) >= MINIMUM_ROUND_NS) break;
		iterations *= 2;
	}
	for (let warmup = 0; warmup < 3; warmup++) {
		for (let index = 0; index < iterations; index++) operation();
	}
	for (let round = 0; round < ROUNDS; round++) {
		(globalThis as { gc?: () => void }).gc?.();
		const started = process.hrtime.bigint();
		for (let index = 0; index < iterations; index++) operation();
		const elapsed = Number(process.hrtime.bigint() - started);
		console.log(
			`Benchmark${name}-${cpus().length}\t${iterations}\t${(elapsed / iterations).toFixed(0)} ns/op`,
		);
	}
}

footerExtension(pi);
segment({
	id: "cwd",
	text: "~/Workspace/dotfiles/pi-ext",
	zone: "workspace",
	order: 0,
});
segment({ id: "vcs", text: "trunk +3 !2", zone: "workspace", order: 1 });
segment({ id: "runtime", text: "node 26.8.2", zone: "workspace", order: 3 });
segment({
	id: "provider",
	text: "",
	icon: "",
	zone: "llm",
	group: "model-route",
	order: -0.5,
});
segment({
	id: "subscription",
	text: "",
	icon: "󱏐",
	color: "success",
	zone: "llm",
	group: "model-route",
	gap: 2,
	order: -0.25,
});
segment({
	id: "model",
	text: "sol:medium",
	color: "syntaxKeyword",
	zone: "llm",
	group: "model-route",
	gap: 2,
	order: 0,
});
segment({
	id: "fast",
	text: "",
	icon: "󱐋",
	color: "warning",
	zone: "llm",
	group: "model-route",
	order: 0.5,
});
segment({
	id: "angel",
	text: "astra:max",
	icon: "󰧑",
	color: "accent",
	zone: "llm",
	group: "model-route",
	separator: "→",
	order: 0.75,
});
segment({
	id: "context-size",
	text: "112k/200k",
	variants: ["56%", "112k"],
	bar: 56,
	suffix: "56%",
	zone: "llm",
	order: 1,
});
segment({
	id: "tokens",
	text: "↑18.2k ↓4.1k  82%",
	zone: "llm",
	order: 2,
});
segment({
	id: "cost",
	text: "$0.42 · Σ$9.71 ·  $2624.8",
	color: "success",
	zone: "llm",
	order: 3,
});
segment({
	id: "quota:openai-codex",
	text: "2h 74% · week 61%",
	icon: "●",
	zone: "llm",
	order: 4,
});
segment({ id: "tps", text: "󰓅 78.4/s", zone: "llm", order: 4 });
emit("session_start", { type: "session_start", reason: "startup" });

console.log(`goos: ${process.platform}`);
console.log(`goarch: ${process.arch}`);
console.log("pkg: pi-ext/footer");
benchmark("RenderWide", () => render(WIDE_COLUMNS));
benchmark("RenderNarrow", () => render(NARROW_COLUMNS));
let update = 0;
benchmark("UpdateAndRender", () => {
	segment({
		id: "tps",
		text: `󰓅 ${(70 + (update++ % 100) / 10).toFixed(1)}/s`,
		zone: "llm",
		order: 4,
	});
	render(WIDE_COLUMNS);
});

emit("session_shutdown", { type: "session_shutdown", reason: "quit" });
if (sink === 42) console.error(sink);