我只是在阅读WebAssembly的Wikipedia页面,上面写着:“ WebAssembly是……设计成比JavaScript解析速度更快 ”,这让我开始思考,是什么使某种语言或数据格式比其他语言解析得更快,以及解析算法是什么?用过的?
我只是在阅读WebAssembly的Wikipedia页面,上面写着:“ WebAssembly是……设计成比JavaScript解析速度更快 ”,这让我开始思考,是什么使某种语言或数据格式比其他语言解析得更快,以及解析算法是什么?用过的?
Answers:
这个话题很复杂。您可以在Google上搜索解析器算法,并且可以获得大量详细资料。
一般来说:
例如:
当JS解析器function
在以下代码中看到关键字:时function xyz(a, b) {}
,function关键字就模棱两可。它首先必须处理下一个标记,xyz
并确定它是一个标识符,然后才能决定它是一个函数声明。
但是,如果下一个标记是a,则(
我们正在处理函数文字:function(a, b) {}
。这就要求解析器表现得截然不同,从而使解析器中的代码更多,从而降低执行速度。
如果针对这两个目的使用不同的关键字,就不会有歧义:
function_decl xyz(a, b, c) {}
和 function_lit(a, b, c) {}
但是,没有人愿意用这种语言写东西。但是WebAssembly不应手工编写。这样一来,该语言就可以针对机器而不是人类进行定制。