使用 ES6Object.keys和lodash _.keys()?
或者用一个来对抗另一个有什么好处?
最近我在考虑使用哪个是最佳实践,有谁知道每个人的引擎盖下是什么?谢谢。
库方法_.keys是用 Javascript 编写的,而不是本机代码——当本机代码和自定义函数都可以完成 X 时,本机代码几乎总是更快,因为它内置在浏览器中并在较低级别上编写(如在 C++ 中):
const obj = [...new Array(50)];
const p0 = performance.now();
for (let i = 0; i < 1e5; i++) {
_.keys(obj);
}
const p1 = performance.now();
console.log('lodash', p1 - p0);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>Run Code Online (Sandbox Code Playgroud)
const obj = [...new Array(50)];
const p0 = performance.now();
for (let i = 0; i < 1e5; i++) {
Object.keys(obj);
}
const p1 = performance.now();
console.log('Object.keys', p1 - p0);Run Code Online (Sandbox Code Playgroud)
也就是说,担心此类优化通常并不重要 - 通常,如果您的脚本有瓶颈,它很可能在其他地方。避免过早优化。如果您当前的代码库使用_.keys并且您不重复调用_.keys大量次数,则可能无需担心 - 您可能会考虑暂时使用代码库的当前风格,无论哪种风格,除非/直到您遇到性能问题.
另一个区别是Object.keysES5 方法。如果您必须支持非常古老的浏览器,它们可能无法在Object.keys没有 polyfill 的情况下使用(并且 polyfill 可能具有与 Lodash 实现相似的性能)。
| 归档时间: |
|
| 查看次数: |
1372 次 |
| 最近记录: |