nodejs / nodejs/node

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

オープン
#37,565 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

stale wasm
主要言語
JavaScript
スター
122k
フォーク
37.3k
平均マージ
4日 2時間
マージ済み PR(30日)
283

説明

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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず require("../func/haversine") と require("haversinecalc") を使って時間の比較を再現し、次にモジュール初期化のコンテキストについて、リンクされている wasm-bindgen の issue を読んでください。有用な成果は、関連する Node.js のモジュール読み込みの挙動と、初期化を繰り返し呼び出しから分離してベンチマークする方法を説明する文書化された回答です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
javascript, node.js, wasm
領域
backend, developer-experience
issue の種類
ドキュメント
難易度
3/5
見積もり時間
1〜2日
活発さ
活発
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。