45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { bench, run } from "mitata";
|
|
import {
|
|
createNullSpritePlaybackAdapter,
|
|
createSpritePlayer,
|
|
} from "../src/index.js";
|
|
|
|
function makeSprite(n: number) {
|
|
const entries = Array.from({ length: n }, (_, i) => ({
|
|
name: `clip-${i}`,
|
|
offset: i * 100,
|
|
byteLength: 100,
|
|
durationSeconds: 0.05,
|
|
sampleRate: 48000,
|
|
channels: 2,
|
|
format: "ogg" as const,
|
|
}));
|
|
return {
|
|
data: new Uint8Array(n * 100),
|
|
manifest: {
|
|
version: 1 as const,
|
|
format: "ogg" as const,
|
|
sampleRate: 48000,
|
|
channels: 2,
|
|
totalDurationSeconds: n * 0.05,
|
|
entries,
|
|
contentHash: "0".repeat(64),
|
|
},
|
|
};
|
|
}
|
|
|
|
for (const n of [1, 10, 100]) {
|
|
const sprite = makeSprite(n);
|
|
const player = createSpritePlayer({
|
|
adapter: createNullSpritePlaybackAdapter(),
|
|
maxConcurrentVoices: 256,
|
|
});
|
|
await player.load(sprite);
|
|
const names = sprite.manifest.entries.map((e) => e.name);
|
|
bench(`playSequence n=${n}`, async () => {
|
|
await player.playSequence(names);
|
|
});
|
|
}
|
|
|
|
await run();
|