至少从 Chrome 47.0.2526.80(64 位)开始,性能没有差异。
Testing in Chrome 6.0.3359 on Mac OS 10.13.4
-----------------------------------------------
Test Ops/sec
non-frozen object 106,825,468 ±1.08% fastest
frozen object 106,176,323 ±1.04% fastest
性能测试(可在http://jsperf.com/performance-frozen-object获得):
const o1 = {a: 1};
const o2 = {a: 1};
Object.freeze(o2);
// Non-frozen object:
for(var key in o1);
// Frozen object:
for(var key in o2);
30.10.2019 更新:Chrome 78.0.3904(64 位)的性能没有差异
17.09.2019更新:Chrome 76.0.3809(64 位)的性能没有差异
03.05.2018 更新:Chrome 66.0.3359(64 位)的性能没有差异
06.03.2017 更新:Chrome 56.0.2924(64 位)的性能没有差异
13.12.2015 更新:Chrome 47.0.2526.80(64 位)的性能没有差异
使用 Chrome 34,在@pimvdb 的测试用例中,冻结对象的性能略好于非冻结对象(结果如下)。然而,差异似乎不足以证明使用这种技术来获得性能优势是合理的。
http://jsperf.com/performance-frozen-object
Testing in Chrome 34.0.1847.116 on OS X 10.9.2
----------------------------------------------
Test Ops/sec
non-frozen object 105,250,353 ±0.41% 3% slower
frozen object 108,188,527 ±0.55% fastest
运行@kangax 的测试用例表明该对象的两个版本的性能几乎相同:
http://jsperf.com/performance-frozen-object-prop-access
Testing in Chrome 34.0.1847.116 on OS X 10.9.2
----------------------------------------------
Test Ops/sec
non-frozen object 832,133,923 ±0.26% fastest
frozen object 832,501,726 ±0.28% fastest
http://jsperf.com/http-jsperf-com-performance-frozen-object-instanceof
Testing in Chrome 34.0.1847.116 on OS X 10.9.2
----------------------------------------------
Test Ops/sec
non-frozen object 378,464,917 ±0.42% fastest
frozen object 378,705,082 ±0.24% fastest