为什么冻结的"枚举"会变慢?

Tim*_*imm 6 javascript node.js

为了访问数组中的数据,我创建了一个enum类似的变量,以便为字段提供人类可读的标识符.

var columns = { first: 0, second: 1 };
var array = ['first', 'second'];
var data = array[columns.first];
Run Code Online (Sandbox Code Playgroud)

当我发现Object.freeze我想要将它用于枚举以便它无法更改时,我希望VM能够使用此信息.

事实证明,Chrome和Node上的测试速度较慢,但​​Firefox上的测试速度稍慢(与数字直接访问相比).

代码可在此处获取:http://jsperf.com/array-access-via-enum

以下是Node的基准测试(对应于JSPerf测试):

  fixed Number: 12ms
  enum: 12ms
  frozenEnum: 85ms
Run Code Online (Sandbox Code Playgroud)

V8还没有很好的实现,或者这个方法对我的用例有什么不理想的东西?

Col*_*ard 4

我在 Firefox 20 中尝试了您的测试,它的速度全面提升,而 IE 10 的速度稍快且更一致。

所以我的答案是否定的,V8 还没有一个很好的实现