Bee AntJared's Blog

FE前端

BE后端

DB数据库

OPS运维

Snippet代码片段

Note笔记

I'm also on

GitHubIf you code

MailIf you talk

RSSIf you subscribe

About.meIf you recommend

根据V8引擎的工作原理给出的优化JavaScript代码的技巧


在V8引擎里5个优化代码的技巧

  • 对象属性的顺序: 在实例化你的对象属性的时候一定要使用相同的顺序,这样隐藏类和随后的优化代码才能共享。

  • 动态属性: 在对象实例化之后再添加属性会强制使得隐藏类变化,并且会减慢为旧隐藏类所优化的代码的执行。所以,要在对象的构造函数中完成所有属性的分配。

  • 方法: 重复执行相同的方法会运行的比不同的方法只执行一次要快(因为内联缓存)。

  • 数组: 避免使用keys不是递增的数字的稀疏数组,这种key值不是递增数字的稀疏数组其实是一个hash表。在这种数组中每一个元素的获取都需要昂贵的代价。同时,要避免提前申请大数组。最好的做法是随着你的需要慢慢的增大数组。最后,不要删除数组中的元素,因为这会使得keys变得稀疏。

  • 标记值(Tagged values): V8用32位来表示对象和数字。它使用一位来区分它是对象(flag = 1)还是一个整型(flag = 0),也被叫做小整型(SMI),因为它只有31位。然后,如果一个数值大于31位,V8将会对其进行box操作,然后将其转换成double型,并且创建一个新的对象来装这个数。所以为了避免代价很高的box操作,尽量使用31位的有符号数。