Benchmarks (#1079)

* tactus-oriented benchmarks
* add benchmarks for individual example tunes
This commit is contained in:
Alex McLean 2024-05-03 10:52:56 +01:00 committed by GitHub
parent 8e2d883e86
commit e47d67a9da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 96 additions and 0 deletions

22
bench/tunes.bench.mjs Normal file
View File

@ -0,0 +1,22 @@
import { queryCode, testCycles } from '../test/runtime.mjs';
import * as tunes from '../website/src/repl/tunes.mjs';
import { describe, bench } from 'vitest';
import { calculateTactus } from '../packages/core/index.mjs';
const tuneKeys = Object.keys(tunes);
describe('renders tunes', () => {
tuneKeys.forEach((key) => {
describe(key, () => {
calculateTactus(true);
bench(`+tactus`, async () => {
await queryCode(tunes[key], testCycles[key] || 1);
});
calculateTactus(false);
bench(`-tactus`, async () => {
await queryCode(tunes[key], testCycles[key] || 1);
});
calculateTactus(true);
});
});
});

View File

@ -11,6 +11,7 @@
"test": "npm run pretest && vitest run --version", "test": "npm run pretest && vitest run --version",
"test-ui": "npm run pretest && vitest --ui", "test-ui": "npm run pretest && vitest --ui",
"test-coverage": "npm run pretest && vitest --coverage", "test-coverage": "npm run pretest && vitest --coverage",
"bench": "npm run pretest && vitest bench",
"snapshot": "npm run pretest && vitest run -u --silent", "snapshot": "npm run pretest && vitest run -u --silent",
"repl": "npm run prestart && cd website && npm run dev", "repl": "npm run prestart && cd website && npm run dev",
"start": "npm run prestart && cd website && npm run dev", "start": "npm run prestart && cd website && npm run dev",

View File

@ -0,0 +1,46 @@
import { describe, bench } from 'vitest';
import { calculateTactus, sequence, stack } from '../index.mjs';
const pat64 = sequence(...Array(64).keys());
describe('tactus', () => {
calculateTactus(true);
bench(
'+tactus',
() => {
pat64.iter(64).fast(64).firstCycle();
},
{ time: 1000 },
);
calculateTactus(false);
bench(
'-tactus',
() => {
pat64.iter(64).fast(64).firstCycle();
},
{ time: 1000 },
);
});
describe('stack', () => {
calculateTactus(true);
bench(
'+tactus',
() => {
stack(pat64, pat64, pat64, pat64, pat64, pat64, pat64, pat64).fast(64).firstCycle();
},
{ time: 1000 },
);
calculateTactus(false);
bench(
'-tactus',
() => {
stack(pat64, pat64, pat64, pat64, pat64, pat64, pat64, pat64).fast(64).firstCycle();
},
{ time: 1000 },
);
});
calculateTactus(true);

View File

@ -9,6 +9,7 @@
}, },
"scripts": { "scripts": {
"test": "vitest run", "test": "vitest run",
"bench": "vitest bench",
"build": "vite build", "build": "vite build",
"prepublishOnly": "pnpm build" "prepublishOnly": "pnpm build"
}, },

View File

@ -0,0 +1,25 @@
import { describe, bench } from 'vitest';
import { calculateTactus } from '../../core/index.mjs';
import { mini } from '../index.mjs';
describe('mini', () => {
calculateTactus(true);
bench(
'+tactus',
() => {
mini('a b c*3 [c d e, f g] <a b [c d?]>').fast(64).firstCycle();
},
{ time: 1000 },
);
calculateTactus(false);
bench(
'-tactus',
() => {
mini('a b c*3 [c d e, f g] <a b [c d?]>').fast(64).firstCycle();
},
{ time: 1000 },
);
calculateTactus(true);
});

View File

@ -9,6 +9,7 @@
}, },
"scripts": { "scripts": {
"test": "vitest run", "test": "vitest run",
"bench": "vitest bench",
"build:parser": "peggy -o krill-parser.js --format es ./krill.pegjs", "build:parser": "peggy -o krill-parser.js --format es ./krill.pegjs",
"build": "vite build", "build": "vite build",
"prepublishOnly": "npm run build" "prepublishOnly": "npm run build"