angular.foreach和native for循环之间的性能差异

Hemakumar

我在应用程序中使用native for循环(下面的第3个循环语句),在某些我阅读native for循环的地方,它的性能比angular.forEach好,但是我没有找到正确的解释。如果有人有更好的解释,请分享。

1)angular.forEach

和2)

for (var i = Things.length - 1; i >= 0; i--){
  Things[i]
};

和3)

for (var i=0; i < Things.length; i++) {
  Things[i]
};

谢谢

迪帕克·沙玛(Deepak Sharma)

用于每个及相关

如果您使用的是支持ES5阵列功能的环境(直接或使用填充程序),则可以使用新的forEach(规格| MDN):

var a = ["a", "b", "c"];
a.forEach(function(entry) {
    console.log(entry);
});

forEach接受一个迭代器函数,以及(可选)一个在调用该迭代器函数时用作该值的值(上面未使用)。依次对数组中的每个条目调用迭代器函数,从而跳过稀疏数组中不存在的条目。尽管上面我只使用了一个参数,但是迭代器函数被三个调用:每个条目的值,该条目的索引以及对您要迭代的数组的引用(以防您的函数尚不具备此参数)便利)。

仍要在通用网页上使用forEach(截至2014年3月)要求您为不支持本机的浏览器添加一个“ shim”,因为IE8和更早版本不支持它(并且全球浏览器用户的使用率介于7%到21%之间,具体取决于您所相信的人;该数字由于中国(与其他国家/地区)相比明显更高的使用率而有所偏差,请始终查看您自己的统计信息以了解您需要支持的内容)。但是填充/填充很容易完成(搜索“ es5 shim”以获得多种选择)。

forEach的好处是您不必在包含范围中声明索引和值变量,因为它们是作为迭代函数的参数提供的,因此很好地范围仅限于该迭代。

如果您担心为每个数组条目进行函数调用的运行时成本,请不必担心;细节。

另外,forEach是“遍历所有对象”功能,但是ES5定义了其他几个有用的“遍历数组并执行操作”功能,包括:

每个(停止迭代器第一次返回false或某些错误的循环),每个过滤器(停止迭代器第一次返回true或真实的循环)创建一个新数组,该数组包含filter函数返回true的元素,并忽略其中的函数返回false)map(根据迭代器函数返回的值创建一个新数组)reduce(通过重复调用迭代器并传入先前的值来建立一个值;有关详细信息,请参见规范;对汇总数组的内容很有用)和许多其他事情)reduceRight(例如reduce,但是以降序而不是升序工作)

使用简单的for循环

有时,旧方法是最好的:

var index;
var a = ["a", "b", "c"];
for (index = 0; index < a.length; ++index) {
    console.log(a[index]);
}

如果数组的长度在循环期间不会改变,并且是对性能敏感的代码(不太可能),那么稍微复杂一些的数组抢占长度可能会快一点:

var index, len;
var a = ["a", "b", "c"];
for (index = 0, len = a.length; index < len; ++index) {
    console.log(a[index]);
}

和/或倒数:

var index;
var a = ["a", "b", "c"];
for (index = a.length - 1; index >= 0; --index) {
    console.log(a[index]);
}

但是,使用现代JavaScript引擎,很少需要消耗最后的精力。

.forEach无法有效地被破坏。您必须抛出异常才能执行中断

因此本机循环比.each循环更好

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

angular.foreach和native for循环之间的性能差异

来自分类Dev

for,while和do while循环之间的性能差异?

来自分类Dev

?? 之间的性能差异 和 ==

来自分类Dev

在foreach循环中使用parallel.foreach和task之间的性能差异是什么?

来自分类Dev

javascript foreach循环for..in和angular forEach循环之间的区别?

来自分类Dev

在使用angular $ filter和带有Filter后缀的名称之间是否存在性能差异?

来自分类Dev

Perl中while(每个)和foreach之间的性能差异

来自分类Dev

foreach循环列表性能差异

来自分类Dev

管道和流程替代之间的性能差异

来自分类Dev

Linux和Windows之间的numpy性能差异

来自分类Dev

阵列,堆栈和队列之间的性能差异

来自分类Dev

Firefox和Chrome之间的webgl性能差异

来自分类Dev

管道和流程替代之间的性能差异

来自分类Dev

drawBitmap和createScaledBitmap之间的性能差异

来自分类Dev

并行和嵌套IF条件之间的性能差异

来自分类Dev

C#和Javascript之间的性能和内存差异?

来自分类Dev

Java 8 lambda和匿名内部类之间的性能差异

来自分类Dev

Numpy和Pandas之间有性能差异吗?

来自分类Dev

Android中query()和rawQuery()方法之间的性能差异

来自分类Dev

std :: count和std :: find之间的性能差异

来自分类Dev

Array和ArrayList之间的性能或内存消耗差异

来自分类Dev

之间存在性能差异?和.where.present?

来自分类Dev

JavaScript中的“ let”和“ var”之间是否存在性能差异

来自分类Dev

NumericVector和vector <double>之间是否存在性能差异?

来自分类Dev

聚集索引和非聚集索引之间的性能差异

来自分类Dev

尾递归和Seq库之间的F#性能差异

来自分类Dev

cmd和工作台mysql之间的查询性能差异

来自分类Dev

Windows和Ubuntu之间的游戏性能差异

来自分类Dev

stdin和命令行参数之间的性能差异

Related 相关文章

  1. 1

    angular.foreach和native for循环之间的性能差异

  2. 2

    for,while和do while循环之间的性能差异?

  3. 3

    ?? 之间的性能差异 和 ==

  4. 4

    在foreach循环中使用parallel.foreach和task之间的性能差异是什么?

  5. 5

    javascript foreach循环for..in和angular forEach循环之间的区别?

  6. 6

    在使用angular $ filter和带有Filter后缀的名称之间是否存在性能差异?

  7. 7

    Perl中while(每个)和foreach之间的性能差异

  8. 8

    foreach循环列表性能差异

  9. 9

    管道和流程替代之间的性能差异

  10. 10

    Linux和Windows之间的numpy性能差异

  11. 11

    阵列,堆栈和队列之间的性能差异

  12. 12

    Firefox和Chrome之间的webgl性能差异

  13. 13

    管道和流程替代之间的性能差异

  14. 14

    drawBitmap和createScaledBitmap之间的性能差异

  15. 15

    并行和嵌套IF条件之间的性能差异

  16. 16

    C#和Javascript之间的性能和内存差异?

  17. 17

    Java 8 lambda和匿名内部类之间的性能差异

  18. 18

    Numpy和Pandas之间有性能差异吗?

  19. 19

    Android中query()和rawQuery()方法之间的性能差异

  20. 20

    std :: count和std :: find之间的性能差异

  21. 21

    Array和ArrayList之间的性能或内存消耗差异

  22. 22

    之间存在性能差异?和.where.present?

  23. 23

    JavaScript中的“ let”和“ var”之间是否存在性能差异

  24. 24

    NumericVector和vector <double>之间是否存在性能差异?

  25. 25

    聚集索引和非聚集索引之间的性能差异

  26. 26

    尾递归和Seq库之间的F#性能差异

  27. 27

    cmd和工作台mysql之间的查询性能差异

  28. 28

    Windows和Ubuntu之间的游戏性能差异

  29. 29

    stdin和命令行参数之间的性能差异

热门标签

归档