zoo*_*oom 7 javascript performance object jsperf
首先,我做了一个快速的jsperf测试用例来显示明显的:
Object.create(null)
比使用{}
语法创建对象慢.
http://jsperf.com/js-object-creation-null-proto
但鉴于这一事实,前一种情况有时可能是优化和性能的一个很好的选择吗?换句话说,操纵最轻量级的js对象可以提高性能,因此在某些情况下使用它成为一个合理的选择.
我指的是你要大量访问对象属性的情况,或者大量使用for in循环.
这种方法是否有太大的风险,无法在库中使用,人们可能会导致这些对象不具备标准Object
原型所带来的标准属性?
另外,你知道另一种(更快)的方法来创建最轻量级的js对象吗?
PS:我做了一个简短的测试用例来说明使用Object.create(null)
和访问属性比使用更快一些的情况{}
.
http://jsperf.com/js-object-creation-and-accessing-properties
我认为创建Object.create(null)
通常不必要的对象并不值得您牺牲浏览器兼容性和清晰度.使用您{}
正在执行的语法Object.create(Object.prototype)
创建对象时,会创建一个可以访问属性的对象Object.prototype
.这意味着你有机会获得类似的方法toString
,并hasOwnProperty
直接从对象,当然也可以覆盖他们,如果你想要的-尽管你应尽量避免这种情况.至于性能,差异非常小,对象上只有两个属性(如jsperf所示).如果您的对象有数百或数千个属性,则差异几乎不存在.
总而言之,如果您希望您的代码能够更好地执行,那么您应该始终努力提高清晰度并尝试改进代码的高级算法设计(而不是您尚未完成); 并且只在绝对必要时才担心微观优化.
归档时间: |
|
查看次数: |
849 次 |
最近记录: |