Page de test et page de mesure du moteur WebAssembly
web/ : le moteur tourne dans un Web Worker (module ES) ; la page de test donne le meilleur coup d'une position et son temps de calcul ; la page de mesure chronomètre les positions de référence, mesure la taille téléchargée et la mémoire, compare aux seuils de l'étape 0b et produit un rapport à copier. make bench fait la même mesure sous Node, make deploy-web sert les pages sur le réseau local. Guide de test pour le Fairphone 4 dans docs/guide-test-etape-0.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b0030521d8
commit
120367e6d3
@@ -0,0 +1,38 @@
|
||||
// engine-worker.mjs -- Web Worker qui fait tourner le moteur WebAssembly.
|
||||
//
|
||||
// Copyright (C) 2026 les auteurs d'Ustagammon.
|
||||
// Licence : GPLv3 ou ultérieure (voir LICENSE).
|
||||
//
|
||||
// Le moteur calcule ici, jamais sur le fil d'affichage de la page. Messages :
|
||||
// - envoyé une fois au chargement : { type: "ready", loadMs, memoryBytes }
|
||||
// ou { type: "failed", message } ;
|
||||
// - reçu : { id, args }, les arguments d'une commande engine-cli ;
|
||||
// - répondu : { id, result, ms, memoryBytes } ou { id, error }.
|
||||
// Les commandes sont traitées une à une, dans l'ordre d'arrivée.
|
||||
|
||||
import createEngineModule from "./wasm/engine.mjs";
|
||||
import { loadEngine } from "./engine-wasm.mjs";
|
||||
|
||||
const start = performance.now();
|
||||
const wasmDir = new URL("wasm/", import.meta.url).href;
|
||||
const ready = loadEngine(createEngineModule, wasmDir);
|
||||
|
||||
ready.then(
|
||||
(engine) => postMessage({
|
||||
type: "ready",
|
||||
loadMs: performance.now() - start,
|
||||
memoryBytes: engine.memoryBytes(),
|
||||
}),
|
||||
(error) => postMessage({ type: "failed", message: String(error.message || error) }),
|
||||
);
|
||||
|
||||
onmessage = async (event) => {
|
||||
const { id, args } = event.data;
|
||||
try {
|
||||
const engine = await ready;
|
||||
const { result, ms } = engine.run(args);
|
||||
postMessage({ id, result, ms, memoryBytes: engine.memoryBytes() });
|
||||
} catch (error) {
|
||||
postMessage({ id, error: String(error.message || error) });
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user