go編譯wasm與調(diào)用

package main

func main() {
}

// 這里指定導(dǎo)出函數(shù)名 后面需要用到


//go:export fib
func Fib(n int) int {
    if n == 0 || n == 1{
        return 1
    }
    var arr = make([]int, n + 1)
    arr[0], arr[1] = 1, 1
    for i := 2;i<=n;i++{
        arr[i] = arr[i - 1] + arr[i - 2]
    }
    return arr[n]
}

編譯wasmer-go/wasmer能用的需要使用到tinygo,
安裝tinygo

命令行執(zhí)行編譯

tinygo build -o ./module.wasm -target wasi .

module.wasm為導(dǎo)出的文件名

go 調(diào)用wasm

package main

import (
    "fmt"
    wasmer "github.com/wasmerio/wasmer-go/wasmer"
    "io/ioutil"
    "time"
)

func main() {
    wasmBytes, _ := ioutil.ReadFile("module.wasm")

    engine := wasmer.NewEngine()
    store := wasmer.NewStore(engine)

    // Compiles the module
    module, err := wasmer.NewModule(store, wasmBytes)
    if err != nil{
        panic(err)
    }

    wasiEnv, _ := wasmer.NewWasiStateBuilder("wasi-program").
        // Choose according to your actual situation
        // Argument("--foo").
        // Environment("ABC", "DEF").
        // MapDirectory("./", ".").
        Finalize()
    // Instantiates the module
    importObject, err := wasiEnv.GenerateImportObject(store, module)
    if err != nil{
        panic(err)
    }
    instance, err := wasmer.NewInstance(module, importObject)
    if err != nil{
        panic(err)
    }
    // Gets the `sum` exported function from the WebAssembly instance.
    fib, _ := instance.Exports.GetFunction("fib")

    // Calls that exported function with Go standard values. The WebAssembly
    // types are inferred and values are casted automatically.
    result, _ := fib(10000)
    st := time.Now()
    fmt.Println(result)
    fmt.Println(time.Since(st).Seconds())
}

執(zhí)行

go run main.go
image.png

py調(diào)用

import pywasm


def fd_write(_: pywasm.Ctx):
    return


vm = pywasm.load("./module.wasm", {'wasi_snapshot_preview1': {
    'fd_write': fd_write
}})

result = vm.exec("fib", [10])


print(result)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末汪厨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子症概,更是在濱河造成了極大的恐慌桨醋,老刑警劉巖癌佩,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冲簿,死亡現(xiàn)場(chǎng)離奇詭異沾乘,居然都是意外死亡拦焚,警方通過(guò)查閱死者的電腦和手機(jī)蜡坊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)赎败,“玉大人秕衙,你說(shuō)我怎么就攤上這事〗┕危” “怎么了据忘?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵鹦牛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我勇吊,道長(zhǎng)曼追,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任汉规,我火速辦了婚禮礼殊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘针史。我一直安慰自己晶伦,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布啄枕。 她就那樣靜靜地躺著婚陪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪频祝。 梳的紋絲不亂的頭發(fā)上泌参,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天外冀,我揣著相機(jī)與錄音锈玉,去河邊找鬼。 笑死芹壕,一個(gè)胖子當(dāng)著我的面吹牛窟绷,可吹牛的內(nèi)容都是我干的锯玛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼兼蜈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攘残!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起为狸,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤歼郭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后辐棒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體病曾,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年漾根,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泰涂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辐怕,死狀恐怖逼蒙,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寄疏,我是刑警寧澤是牢,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布僵井,位于F島的核電站,受9級(jí)特大地震影響驳棱,放射性物質(zhì)發(fā)生泄漏批什。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一蹈胡、第九天 我趴在偏房一處隱蔽的房頂上張望渊季。 院中可真熱鬧,春花似錦罚渐、人聲如沸却汉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)合砂。三九已至,卻和暖如春源织,著一層夾襖步出監(jiān)牢的瞬間翩伪,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工谈息, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缘屹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓侠仇,卻偏偏與公主長(zhǎng)得像轻姿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逻炊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 用到的組件 1互亮、通過(guò)CocoaPods安裝 2、第三方類庫(kù)安裝 3余素、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 14,601評(píng)論 1 180
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理豹休,服務(wù)發(fā)現(xiàn),斷路器桨吊,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • Getting Started Overview 本資源的目的是幫助讀者了解使用Substrate進(jìn)行區(qū)塊鏈開(kāi)發(fā)的...
    buddyCoder閱讀 377評(píng)論 0 0
  • 項(xiàng)目中服務(wù)都是以GRPC的方式提供威根,但是為了和前臺(tái)對(duì)接,需要以Restful的方式提供接口视乐。于是研究了GPRC到R...
    georgeguo閱讀 3,059評(píng)論 0 1
  • 引言 React Native路由導(dǎo)航医窿,有它就夠了!該文檔根據(jù)React Navigation文檔翻譯炊林,有些內(nèi)容會(huì)...
    shiyueZ閱讀 1,264評(píng)論 5 4