在构造函数中初始化所有对象成员,不要在构造函数外创建新成员(这会导致 V8 创建新的隐藏类)
尽量使用 31 位浮点整数,如果超出这个范围 V8 需要修改存储格式。(至于为什么是 31 位,因为 V8 占用一位当做标志位,用来标识这个数字是否超过 31 位)
数组索引从 0 开始,不要直接就用 25000 这样的索引
不要提前初始化大数组(比如超过 64000 个元素),尽量动态分配
不要删除数组中的元素,尤其是存储数值的数组,这样会产生稀疏数组,让元素从快速模式切换到字典模式(键值对)
不要使用数组中未初始化或者已经被删除的元素,会产生不必要的查找操作
对于小数组来说,尽量使用数组字面量进行赋值(比如
a = [1,2,3]
),如果一个一个元素赋值,类型不同的时候可能导致V8隐藏类多次切换,降低性能对于小数组来说,在使用数组之前分配正确的大小
不要在数值数组中存储非数值的值(对象)
使用函数时候尽量执行同质操作(比如每次都传入两个整数或者每次都传入两个浮点数),避免多态操作(传入的参数类型和之前的不同),后者会导致隐藏类改变
try catch
无法被V8优化,解决方法是把try catch
内部的代码写成函数,函数可以被优化在函数被优化之后一定要避免隐藏类改变
使用V8引擎的要点
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...