博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript也能写WebAssembly
阅读量:7041 次
发布时间:2019-06-28

本文共 1169 字,大约阅读时间需要 3 分钟。

探索方法

只闻其名,从未实践过的WebAssembly。 照我的想法,做前端开发的大多熟悉脚本语言,不精通C、C++、rust等语言。

那么有一个方法可以用js写了源码编译成webassembly就好了。于是找了好久找到了walt这个东西。

walt

walt可以用AssemblyScript 来编写代码并自动编译,AssemblyScript 是TypeScript的子集。

配置方法参考:

呃。。。这一篇估计会有点难写,可能得看一下源码了。

用walt写了几行代码,好像一直出错,官方文档也不够丰富,不知道怎么解决,决定再探索一下其它方法。

放弃walt使用 assemblyscript

又探索了一下,发现了个不需要使用walt也可以用TypeScript写WebAssembly的办法,参考正面的url:

大致思路就是:使用asc工具,将assemblyscript编写的代码生成.wasm 文件,再使用new WebAssembly.Instance()和new WebAssembly.Module()将其加载为js可读取的代码。最终用js调用。

记录一段加载.wasm并调用其中方法的代码吧。

fetch('./module.optimized.wasm')        .then(response => response.arrayBuffer())        .then(function(result){            console.log(result);            let myModule = new WebAssembly.Instance(new WebAssembly.Module(result, {}));            console.log(myModule.exports.add());        });复制代码

对比测试

将斐波那契测试n值设置为50时原生js耗时: 243727毫秒,WebAssembly耗时: 87325毫秒。性能差异巨大。

有空的时候得再测试一下C和JAVA与它的性能对比。

哭,相同环境下JAVA跑出来只要40000多毫秒。

语言 n值 耗时(ms)
js 50 243727
WebAssembly 50 87325
JAVA 50 40000
C - -

本次测试中WebAssembly运算速度大概为js的3倍,JAVA的1/2,相对来说性能已经有了极大的提升。

但是为什么比JAVA慢,个人认为性能瓶颈应该是出在了WebAssembly编译器上。

以后应该仔细研究一下WebAssembly的编译器。

还有许多没有搞明白的,比如:官网上说的native speed是指某一种编程语言还是指机器码的速度?

参考资料:

转载地址:http://uaxal.baihongyu.com/

你可能感兴趣的文章
redis神器
查看>>
python输出excel能够识别的utf-8格式csv文件
查看>>
Objective-C编程 - 1. 浅谈内存分配
查看>>
CLR Managed Debugger——原来Managed代码也能做这些
查看>>
《马上有招儿:PPT商务演示精选20讲(全彩) 》
查看>>
HDU 5059 Harry And Biological Teacher
查看>>
转-让你的控件也具有拖拽(drag-and-drop)功能
查看>>
win32的时间api
查看>>
学习OpenCV——绘制彩色直方图(HSV2BGR)
查看>>
Processing中图片色彩设置
查看>>
Cocos2d 中对图片的各种操作
查看>>
cocos2d坐标系
查看>>
Android.mk的用法和基础
查看>>
CentOS7 安装Docker
查看>>
笔记本高分辨软件兼容问题,字体太小或模糊
查看>>
分布式存储系统可靠性系列五:副本放置算法 & CopySet Replication
查看>>
常用电线负载的电流和功率
查看>>
TreeMap升序|降序排列和按照value进行排序
查看>>
redis在windows10上跑起来
查看>>
面试题目:反转链表的算法实现
查看>>