nodejs / nodejs/node

How to cache wasm module in nodejs, or it's already cached on startup ?

Offen
#37,565 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

stale wasm
Vorherrschende Sprache
JavaScript
Sterne
122k
Forks
37.3k
Ø Merge
4 T. 2 Std.
Gemergte PRs (30 T.)
283

Beschreibung

according to this https://github.com/rustwasm/wasm-bindgen/issues/2473

Summary

I created comparison between manual javascript haversine function, and wasm based.
the result if i compared including the module initialization, wasm based getting much slower than javascript itself.

Additional Details
console.time("manual")
const haversinee = require("../func/haversine")
const src = {
    lat: -7.0,
    lng: 7.0
}

const dst = {
    lat: -8.0,
    lng: 8.0
}
console.log("manual js : "+ haversinee(src, dst, false))
console.timeEnd("manual")

console.time("wasm")
const {Point, haversine} = require("haversinecalc") // this is the problem

const src_p = new Point(-7.0,7.0)
const dst_p = new Point(-8.0,8.0)

console.log("using wasm : "+ haversine(src_p, dst_p))
console.timeEnd("wasm")

Result with module initialization included

manual js : 156581.10278754708
manual: 12.337ms
using wasm : 156581.10278754708
wasm: 18.109ms

Result without module initialization

manual js : 156581.10278754708
manual: 7.709ms
using wasm : 156581.10278754708
wasm: 0.287ms

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, den Zeitvergleich mit require("../func/haversine") und require("haversinecalc") zu reproduzieren, und lies dann den verlinkten wasm-bindgen-Issue zum Kontext der Modulinitialisierung. Ein nützliches Ergebnis wäre eine dokumentierte Antwort, die das relevante Verhalten des Node.js-Modulladens erklärt und erläutert, wie die Initialisierung getrennt von wiederholten Aufrufen gemessen werden kann.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js, wasm
Bereich
backend, developer-experience
Issue-Typ
Dokumentation
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.