为什么冻结的“枚举”比较慢?
为了访问一个数组中的数据,我创build了一个enum
的variables来为这些字段提供人类可读的标识符。
var columns = { first: 0, second: 1 }; var array = ['first', 'second']; var data = array[columns.first];
当我发现有关Object.freeze
我想把它用于枚举,这样它就不能被改变,我希望虚拟机使用这个信息是有好处的。
事实certificate,Chrome和Node的testing速度较慢,但Firefox的testing速度稍快(与直接访问数量相比)。
代码可以在这里find: http : //jsperf.com/array-access-via-enum
以下是Node的基准(对应于JSPerftesting):
fixed Number: 12ms enum: 12ms frozenEnum: 85ms
V8还没有一个很好的实现,或者这个方法对我的用例来说是不是最理想的?
我在Firefox 20上testing了这个版本,这个版本的速度非常快,而且IE 10的速度更快,更一致。
所以我的回答是否定的,V8还没有很好的实施
根据这个bugreport ,目前冻结一个对象放在“字典模式”,这是缓慢的。
所以不是提高性能,而是“枚举”/小arrays的明显放缓。