- Create benchmark test suites for critical operations: - Node loading performance - Database query performance - Search operations performance - Validation performance - MCP tool execution performance - Add GitHub Actions workflow for benchmark tracking: - Runs on push to main and PRs - Uses github-action-benchmark for historical tracking - Comments on PRs with performance results - Alerts on >10% performance regressions - Stores results in GitHub Pages - Create benchmark infrastructure: - Custom Vitest benchmark configuration - JSON reporter for CI results - Result formatter for github-action-benchmark - Performance threshold documentation - Add supporting utilities: - SQLiteStorageService for benchmark database setup - MCPEngine wrapper for testing MCP tools - Test factories for generating benchmark data - Enhanced NodeRepository with benchmark methods - Document benchmark system: - Comprehensive benchmark guide in docs/BENCHMARKS.md - Performance thresholds in .github/BENCHMARK_THRESHOLDS.md - README for benchmarks directory - Integration with existing test suite The benchmark system will help monitor performance over time and catch regressions before they reach production. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import { bench, describe } from 'vitest';
|
|
|
|
/**
|
|
* Sample benchmark to verify the setup works correctly
|
|
*/
|
|
describe('Sample Benchmarks', () => {
|
|
bench('array sorting - small', () => {
|
|
const arr = Array.from({ length: 100 }, () => Math.random());
|
|
arr.sort((a, b) => a - b);
|
|
}, {
|
|
iterations: 1000,
|
|
warmupIterations: 100
|
|
});
|
|
|
|
bench('array sorting - large', () => {
|
|
const arr = Array.from({ length: 10000 }, () => Math.random());
|
|
arr.sort((a, b) => a - b);
|
|
}, {
|
|
iterations: 100,
|
|
warmupIterations: 10
|
|
});
|
|
|
|
bench('string concatenation', () => {
|
|
let str = '';
|
|
for (let i = 0; i < 1000; i++) {
|
|
str += 'a';
|
|
}
|
|
}, {
|
|
iterations: 1000,
|
|
warmupIterations: 100
|
|
});
|
|
|
|
bench('object creation', () => {
|
|
const objects = [];
|
|
for (let i = 0; i < 1000; i++) {
|
|
objects.push({
|
|
id: i,
|
|
name: `Object ${i}`,
|
|
value: Math.random(),
|
|
timestamp: Date.now()
|
|
});
|
|
}
|
|
}, {
|
|
iterations: 1000,
|
|
warmupIterations: 100
|
|
});
|
|
}); |