Files
suaveplan/packages/media/audio/audio-sprite-player/bench/play.bench.ts
2026-05-27 23:47:53 +01:00

50 lines
1.2 KiB
TypeScript

import { bench, run } from "mitata";
import {
createNullSpritePlaybackAdapter,
createSpritePlayer,
} from "../src/index.js";
const sprite = {
data: new Uint8Array([1, 2, 3]),
manifest: {
version: 1 as const,
format: "ogg" as const,
sampleRate: 48000,
channels: 2,
totalDurationSeconds: 1,
entries: [
{
name: "hit",
offset: 0,
byteLength: 100,
durationSeconds: 0.1,
sampleRate: 48000,
channels: 2,
format: "ogg" as const,
},
],
contentHash: "0".repeat(64),
},
};
const adapter = createNullSpritePlaybackAdapter();
const player = createSpritePlayer({ adapter, maxConcurrentVoices: 64 });
await player.load(sprite);
bench("play() one-shot via NullSpritePlaybackAdapter", async () => {
const h = await player.play("hit");
await h.stop(0);
});
const tightPlayer = createSpritePlayer({
adapter: createNullSpritePlaybackAdapter(),
maxConcurrentVoices: 1,
});
await tightPlayer.load(sprite);
bench("play() under voice-stealing pressure (cap=1)", async () => {
await tightPlayer.play("hit");
});
await run();