lodash _.size() 比 JS length 属性 快吗?
Is lodash _.size() faster than JS length property?
文章(下面的 link)建议在字符串上使用长度 属性 会创建一个对象引用,这会不必要地减慢函数速度。
http://www.webreference.com/programming/javascript/jkm3/2.html
在这种情况下,使用 lodash _.size() 的优势是什么?它的表现与(原生...?)长度 属性 有什么不同吗?
如果您要对对象中的数组或键进行计数,使用 lodash 大小而不是长度 属性 有什么好处吗?
从 lodash 来源,_.size()
实现为:
function size(collection) {
var length = collection ? getLength(collection) : 0;
return isLength(length) ? length : keys(collection).length;
}
对于一个数组,第一行是间接地做 collection.length
所以 _.size()
如果有的话,稍微慢一点。
在性能文章中,性能问题是 length
的 属性 查找被使用,而堆栈上的数字本可以用于实现相同的目标。换句话说,解决方案不是寻找更快的 属性,而是在可能的情况下完全避免 属性。
size() function is most useful in chains, when you need the size of the result. There's no point in unpacking everything using value() 只是为了得到大小。例如:
_(_.range(10))
.filter(function(item) { return item % 2; })
.size();
相对于较长的形式:
_(_.range(10))
.filter(function(item) { return item % 2; })
.value()
.length;
此功能还可以更轻松地查找对象的大小:
_.size({ a: 1, b: 2 });
相对于:
Object.keys({ a: 1, b: 2 }).length;
size()
是关于代码简洁性,而不是性能。
https://www.measurethat.net/Benchmarks/Show/17859/3/native-filterlength-vs-lodash-sumby-vs-lodash-filtersiz 表示 array.filter(testFunction).length
比在 Firefox 上使用 _(array).filter(testFunction).size()
和 Chrome 等 lodash 更快,截至 2022 年 3 月 22 日。
那 link 也显示了一种更快的方法来做同样的事情。我假设更快的方法更快,因为它不需要创建一个新数组并将过滤后的元素添加到该数组,就像 filter()
在 array.filter(testFunction).length
.
中所做的那样
文章(下面的 link)建议在字符串上使用长度 属性 会创建一个对象引用,这会不必要地减慢函数速度。
http://www.webreference.com/programming/javascript/jkm3/2.html
在这种情况下,使用 lodash _.size() 的优势是什么?它的表现与(原生...?)长度 属性 有什么不同吗?
如果您要对对象中的数组或键进行计数,使用 lodash 大小而不是长度 属性 有什么好处吗?
从 lodash 来源,_.size()
实现为:
function size(collection) {
var length = collection ? getLength(collection) : 0;
return isLength(length) ? length : keys(collection).length;
}
对于一个数组,第一行是间接地做 collection.length
所以 _.size()
如果有的话,稍微慢一点。
在性能文章中,性能问题是 length
的 属性 查找被使用,而堆栈上的数字本可以用于实现相同的目标。换句话说,解决方案不是寻找更快的 属性,而是在可能的情况下完全避免 属性。
size() function is most useful in chains, when you need the size of the result. There's no point in unpacking everything using value() 只是为了得到大小。例如:
_(_.range(10))
.filter(function(item) { return item % 2; })
.size();
相对于较长的形式:
_(_.range(10))
.filter(function(item) { return item % 2; })
.value()
.length;
此功能还可以更轻松地查找对象的大小:
_.size({ a: 1, b: 2 });
相对于:
Object.keys({ a: 1, b: 2 }).length;
size()
是关于代码简洁性,而不是性能。
https://www.measurethat.net/Benchmarks/Show/17859/3/native-filterlength-vs-lodash-sumby-vs-lodash-filtersiz 表示 array.filter(testFunction).length
比在 Firefox 上使用 _(array).filter(testFunction).size()
和 Chrome 等 lodash 更快,截至 2022 年 3 月 22 日。
那 link 也显示了一种更快的方法来做同样的事情。我假设更快的方法更快,因为它不需要创建一个新数组并将过滤后的元素添加到该数组,就像 filter()
在 array.filter(testFunction).length
.