繁体   English   中英

lodash _.size()比JS长度属性更快吗?

[英]Is lodash _.size() faster than JS length property?

文章(下面的链接)表明,在字符串上使用length属性会创建一个对象引用,这会不必要地降低函数的速度。

http://www.webreference.com/programming/javascript/jkm3/2.html

在这种情况下,使用lodash _.size()有什么好处? 它与(native ...?)长度属性的执行方式有何不同?

如果你在计算对象中的数组或键,使用lodash大小而不是length属性有什么好处吗?

从lodash源代码, _.size()实现为:

function size(collection) {
  var length = collection ? getLength(collection) : 0;
  return isLength(length) ? length : keys(collection).length;
}

对于数组,第一行是间接进行collection.length以便_.size() (如果有的话)稍慢(微小)一点。

在性能文章中,性能问题是当堆栈上的数字可用于实现相同的目标时,正在使用length的属性查找。 换句话说,解决方案不是寻找更快的属性,而是在可以完成时完全避免属性。

当您需要结果的大小时, size()函数在链中最有用。 使用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()是关于代码简洁,而不是性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM