使用ES6 Object.keys和lodash _.keys()有什么性能差异吗?
或者用一个来对付另一个有什么好处?
最近,我正在考虑使用哪一个是最佳实践,有没有人知道每个人的头套都是什么?谢谢。
发布于 2019-04-30 05:15:05
库方法_.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);<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
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);
尽管如此,担心这样的优化通常并不重要--通常,如果您的脚本有瓶颈,它很可能在其他地方。避免过早优化。如果您当前的代码库使用_.keys,并且您没有多次调用_.keys,那么可能并不需要担心--您可能会考虑坚持您的代码库当前的样式,无论目前是哪种风格,除非/直到遇到性能问题。
另一个不同之处是Object.keys是一个ES5方法。如果您必须支持异常古老的浏览器,他们可能无法使用Object.keys而没有一个多边形填充(而且一个填充可能具有类似于Lodash实现的性能)。
https://stackoverflow.com/questions/55914302
复制相似问题