【发布时间】:2019-04-14 22:55:42
【问题描述】:
我有这个以函数式风格编写的 JavaScript 代码:
someArray
.filter((element) => element)
.map((element) => element.property)
.map((property) => doSomethingWithIt)
现在,一个简单的实现会在数组上循环 3 次——filter 和 map 各循环一次——但优化器应该能够将它优化到一个执行多个操作的循环,假设所有函数都是纯的。
(大多数?)JavaScript 引擎会对此进行优化;还是需要手动优化?
编辑:我认为优化的只是将其减少到一个循环:
someArray.reduce((acc, element) => {
if(!element) {
return acc
}
return acc.push(doSomethingWithIt(element.property))
}, [ ])
【问题讨论】:
-
你的两个问题可能都不是。地图规范没有提及展开ecma-international.org/ecma-262/6.0/#sec-array.prototype.map。而且你可能不需要优化两张地图
-
我无法谈论实际的实现细节,但我只想说这肯定不是性能瓶颈。
-
创建一个性能测试,看看会告诉你什么
标签: javascript performance compiler-optimization