javascript / expert
Snippet
Verwaltung Hochfrequenter Streaming-Daten mit Float32Array-Views in Svelte Stores
Durch die Verwaltung zusammenhängender binärer ArrayBuffer-Allokationen in einem Svelte-Store können Anwendungen datenintensive Streams wie Web-Audio verarbeiten, ohne übermäßige Garbage Collection auszulösen.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { writable } from 'svelte/store';export function createAudioBufferStore(bufferSize = 1024) {const memoryBuffer = new ArrayBuffer(bufferSize * Float32Array.BYTES_PER_ELEMENT);const dataView = new Float32Array(memoryBuffer);const { subscribe, set } = writable(dataView);return {subscribe,pushSamples(samples) {dataView.copyWithin(0, samples.length);dataView.set(samples, dataView.length - samples.length);set(new Float32Array(memoryBuffer));}};}
svelte
Erklärung
1
const memoryBuffer = new ArrayBuffer(bufferSize * Float32Array.BYTES_PER_ELEMENT);
Reserviert einen binären Speicherblock fester Größe für fließkomma-basierte Audiodaten.
2
dataView.copyWithin(0, samples.length);
Führt eine speicherinterne Bit-Verschiebung über TypedArray-Slots für maximale Performance aus.
3
set(new Float32Array(memoryBuffer));
Gibt eine neue TypedArray-View frei, um reaktive Subscriber in Svelte-Komponenten zu benachrichtigen.