首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Object.keys和_.keys()的性能有什么不同?

使用Object.keys和_.keys()的性能有什么不同?
EN

Stack Overflow用户
提问于 2019-04-30 05:07:41
回答 1查看 2.2K关注 0票数 1

使用ES6 Object.keyslodash _.keys()有什么性能差异吗?

或者用一个来对付另一个有什么好处?

最近,我正在考虑使用哪一个是最佳实践,有没有人知道每个人的头套都是什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-04-30 05:15:05

库方法_.keys是用Javascript编写的,而不是用本机代码编写的--当本机代码和自定义函数都可以完成X时,本机代码几乎总是更快,因为它是内置在浏览器中并在较低级别上编写的(如在C++中):

代码语言:javascript
复制
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);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>

代码语言:javascript
复制
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实现的性能)。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55914302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档