看漫画,学 WebAssembly

本文讲的是看漫画,学 WebAssembly,

WebAssembly 运行得很快,你可能已经听说过这个了。但是是什么让 WebAssembly 这么快呢?

在这个系列的文章里,我想和你解释一下为什么 WebAssembly 这么快。

等等,WebAssembly 究竟是什么?

WebAssembly 是一种用 JavaScript 以外的编程语言编写的代码并在浏览器中运行该代码的方法。因此当人们说 WebAssembly 运行得很快的时候,通常他们都是在和 JavaScript 进行比较。

现在,我不想暗示这是一个二选一的情况 —— 你要么用 WebAssembly 或者用 JavaScript。事实上,我们期望开发者能够在同一个应用里面同时使用 WebAssembly 和 JavaScript。

但是比较一下这二者是非常有用的,你可以因此理解 WebAssembly 将会具有的潜在影响。

一点性能历史

JavaScript 创建于 1995 年。它不是为了快而设计的,并且在最初前十年,它并不快。

然后浏览器之间的竞争开始变得愈演愈烈。

在 2008 年,人们所谓的“性能战争”时期开始了。很多浏览器都添加了即时编译器 —— 也叫做 JIT。当 JavaScript 运行时,JIT 可以看到模式(pattern)并且基于这些模式(pattern)让代码运行得更快。

这些 JIT 的引入致使 JavaScript 的性能进入了一个转折点。JS 的执行速度快了 10 倍。

A graph showing JS execution performance increasing sharply in 2008

通过这种性能的改善,JavaScript 开始被用于没有人期望用它来做的一些事情上。例如使用 Node.js 进行服务端编程。性能的改善使得在一个全新的问题上使用 JavaScript 成为了可能。

伴随着 WebAssembly,我们现在可能正处于另一个转折点。

A graph showing another performance spike in 2017 with a question mark next to it

因此,让我们深入细节之中,来理解是什么使得 WebAssembly 很快。






原文发布时间为:2017年3月14日


本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-11-08 18:44:33

看漫画,学 WebAssembly的相关文章

看图学轮链 在企业与站群中的应用

成体系的Linkwheel(轮链)开始一直用作于站群及整站的外部链接建设,这种链接策略可以将外部链接进行整体提权,并且很好的做外部链接的规划.尤其是新站的时候没有太多的外部链接资源,本身网站又没有权重,无法获得同类网站的支持,如果运用轮链将外部链接进行整体提权,那么前期很容易就会渡过.由于混链的操作太过繁琐,今天我们就小型网站和站群来进行详细的解释轮链该如何做. 一.小型博客或企业网站 可以看到这是一个简单的饰品博客,站内的优化已经做的差不多了,站外的链接也不用做太多,只要保持稳定.数量.广泛度

看实例学VFP:页框控件的使用

页框(pageframe) 也是vfp的一个基本控件,使用它可以制作出类似于windows对话框的效果,关于这个控件的常用属性和方法请参考vfp基础教程-页框和页一文. 页框控件本身是一个容器,其中可以包含若干个页(page):而页也是容器,可以在其中添加各种对象,因此无论是在设计时添加对象或者是代码引用,都要比别的控件麻烦些.在使用这个控件时需要注意:如果设计时要向某个页中添加对象,一定要在页框的编辑状态下选中该页的标签,然后再向该页中添加控件:另外在不同页之间切换时,需要处理好数据源的问题.

看实例学VFP:对组合框控件的再探索

组合框控件(combobox)在vfp中也是一个常用的控件,组合框兼具文本框和列表框的功能,它的名称大概也由此而来.在vfp基础教程-组合框控件(combobox) 中已经比较详细地给出了组合框的常用属性和方法. 在组合框控件的应用中,很重要的一个环节是它的RowSourceType及RowSource这两个属性的组合.比如在看实例学VFP:对表中记录进行定位与查找操作这个例子中是把组合框的RowSourceType属性值设为"1-值",而在看实例学VFP:去除查询结果中的重复记录这个

看实例学VFP:文本框控件

文本框控件(textbox)主要用于接收或显示数据,在vfp中是一个常用控件,差不多每个程序都要用到它.vfp基础教程-文本框(textbox)控件及vfp基础教程-数组中已经分别对文本框控件和数组做了介绍,本文来设计一个将这二者结合起来应用的例子. 关于文本框控件数据源的处理: 如果在表单中使用数据环境,可以在"数据环境设计器"中拖动表的各个字段到表单上,系统会自动生成各个字段对应的标签及文本框,并且文本框的数据源会自动与表中对应的字段绑定,这是一种处理方式:另外也可以不使用数据环境

看实例学VFP:进度条控件

我们在使用Windows系统的时候,如果复制一个较大的文件或者是从网上下载东西,在复制或下载的过程中都会出现一个对话框,并且在该对话框中会有一个进度条来显示复制或下载的进度.在vfp可以使用进度条控件(ProcessBar)来实现类似的功能,有的场合下可以用到它,比如软件包含了数据备份的功能,可以用它来显示备份的进度.但是这个控件的使用不是必须的,使用它无非是可以让你编的东西看起来更专业些. 进度条控件有几个比较重要的属性,如下: min:进度条的最小值,默认为0. max:进度条的最大值,默认

看实例学VFP:用列表框控件做个“开始菜单”

What is "开始菜单"?这应该是一句废话.因为只要是使用Windows系统的,都知道单击了任务栏左侧的"开始"按钮就会出现这个菜单,并且可能每天都会使用这个菜单. 那么用vfp编写的软件能否不使用菜单,而是把软件菜单的功能项都放到这样一种类似于Windows系统的"开始菜单"里呢?可以的,只要你喜欢. 今天我们用列表框控件做个简单的"开始菜单",运行时单击了表单的"开始"按钮后如下图: 此时就可以执行

看实例学VFP:用sql命令修改表结构

在看实例学VFP:用sql语句修改数据表记录一文中介绍过用sql语句修改表记录的值,实际vfp中也可以用sql语言中的Alter语句动态的修改表结构.虽然可以实现这样的操作,但是我觉得尽可能还是不要在程序中动态修改表结构,因为这样有可能会造成程序的不稳定以及其它的意外情况. vfp中对表结构的操作主要是增加字段.修改字段.重命名字段和删除字段这四项,sql中修改表结构的语句是Alter语句,那么和这四项操作相对应的Alter语句格式可以总结如下: 增加字段:alter talbe 表名 add

看实例学VFP:用sql命令创建表

本文是一个在vfp中使用sql命令创建表的实例.用sql命令创建表结构的格式如下: create table 表名 (字段名1 类型(宽度[,小数位]),字段名2 类型(宽度[,小数位]),-) 在看实例学VFP:示例数据库一文中已经给出了"网站信息表"的表结构如下表: 字段名 类型 宽度 编号 字符型 5 网站名称 字符型 12 网站网址 字符型 24 那么我要创建相同的表结构并且表名为"网站信息表2"的sql命令如下: create table 网站信息表2 (

看实例学VFP:主程序及连编综合示例

本文给出一个简单的主程序并将我们做的这个简单的系统连编成为可执行文件.本实例采用顶层表单作为软件的主界面,运行连编后的exe会首先出现要求用户名和密码的登录表单,如下图: 连续3次输入错误的用户名及密码会自动退出,输入正确的用户名及密码后,登录表单隐藏并且启动主表单,如下图: 本例要点:因为使用顶层表单做主界面,就需要在主程序中加一句_screen.visible=.f.把主屏幕屏蔽掉:主表单是顶层表单,则主表单菜单各模块所调用的表单的ShowWindow属性值都应设置为"1-在顶层表单中&qu