为什么冻结的“枚举”比较慢?

为了访问一个数组中的数据,我创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的明显放缓。