Javascript 优化是如何工作的?
我创建了一个具有一些属性的对象,并应用了一些函数来执行该对象的一些信息。之后,我又做了同样的手术。 我想知道当我第二次做同样的任务时,效率是如何变化的Javascript 优化是如何工作的?,javascript,node.js,Javascript,Node.js,我创建了一个具有一些属性的对象,并应用了一些函数来执行该对象的一些信息。之后,我又做了同样的手术。 我想知道当我第二次做同样的任务时,效率是如何变化的 const dragonEvents = [ { type: 'attack', value: 12, target: 'player-dorkman'}, { type: 'yawn', value: 40}, { type: 'eat', target: 'horse'}, { type: 'attack', value:
const dragonEvents = [
{ type: 'attack', value: 12, target: 'player-dorkman'},
{ type: 'yawn', value: 40},
{ type: 'eat', target: 'horse'},
{ type: 'attack', value: 23, target: 'player-fluffykins'},
{ type: 'attack', value: 12, target: 'player-dorkman'},
]
console.time('firstTimer')
const totalDamageOnDorkman = dragonEvents
.filter(function (event) {
return event.type === 'attack'
})
.filter(function (event) {
return event.target === 'player-dorkman'
})
.map(function (event) {
return event.value
})
console.timeEnd('firstTimer')
console.time('secondTimer')
const totalDamageOnDorkman1 = dragonEvents
.filter(function (event) {
return event.type === 'attack'
})
.filter(function (event) {
return event.target === 'player-dorkman'
})
.map(function (event) {
return event.value
})
console.timeEnd('secondTimer')
效率结果如下所示:
firstTimer: 0.442ms
secondTimer: 0.087ms
问题是,是什么导致了这种效率的提高,我从哪里可以准确地了解到这种机制?不同的用户代理的实现方式不同,并且实现的任何优化都是本机的。
firstTimer:0.000ms,secondTimer:0.000ms
在chrome上。编译器和特殊优化很可能依赖于。另外,这个话题对一个更一般的问题有点误导。好问题!作为一个完全不相关的点,您可以对匿名函数使用lambda表示法,这些函数只返回一个值.filter(event=>event.target==='player dorkman')
我在Chrome中没有得到任何有意义的区别,第一个为0.069,第二个为0.070ms。我没有提到,但是我使用Node.js v6.8.1运行我的代码。不同的用户代理的实现方式不同,实现的任何优化都是本机的。firstTimer:0.000ms,secondTimer:0.000ms
。编译器和特殊优化很可能依赖于。另外,这个话题对一个更一般的问题有点误导。好问题!作为一个完全不相关的点,您可以对匿名函数使用lambda表示法,这些函数只返回一个值.filter(event=>event.target===“player dorkman”)
我在Chrome中没有得到任何有意义的区别,第一个值为0.069,第二个值为0.070ms。我没有提到,但我使用Node.js v6.8.1运行代码