javascript中怎么提高扩展运算符的性能

  介绍

这篇“javascript中怎么提高扩展运算符的性能“文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“javascript中怎么提高扩展运算符的性能”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。

Java可以用来干什么

Java主要应用于:1。网页开发;2。Android开发;3。客户端开发;4。网页开发;5。企业级应用开发;6。Java大数据开发;7。游戏开发等。

让我们首先简要介绍一下扩展运算符在数组中的工作原理。

扩展运算符,也就是我们常用的三个,让数组展开变成每个小块,然后使用中括号语法<代码>[]>

扩展运算符可以被放置在中括号<代码>[]里面的任何位置。

const  numbers =, (1, 2, 3];   [0,,…数字];,,,,//,=祝辞,[0,1,2,3]   [0,,…,,4];,//,=祝辞,[0,,1,,2,,3,,4]   […数字,4];,,,,//,=祝辞,[1,,2,,3,,4]

回答我们一开始提出的问题,扩展运算符在数组文字中的位置是否可以提高性能吗?让我们往后继续探究。

附加到头部和尾部功能

在开始性能比较之前,让我们定义两个函数。

第一个是<代码> appendToTail() :

function  appendToTail(项目,数组),{   return 才能;[…数组,,项目);   }      const  numbers =, (1, 2, 3];   appendToTail(10,数字),,//,=祝辞,[1,,2,,3,,10]

<代码> appendToTail() 可以让你在数组的末尾插入一个值。此函数使用了以下写法<代码> […数组,项目]

第二个是<代码> appendToHead() :

function  appendToHead(项目,数组),{   return 才能;[,,……数组);   }      const  numbers =, (1, 2, 3];   appendToHead(10,数字),,//,=祝辞,[10,,1,,2,,3]

<代码> appendToHead() 是一个纯函数,它返回一个新数组,其中添加的值是插入在原数组的头部。它使用<代码>[项目,…数组)

讲道理就上面这两个函数的表现,没有理由认为这些功能会有不一样的效率。但是事实可能跟我们想象中不一样,下面让我们来继续测试吧。

性能测试

我用<代码> MacBook Pro> […数组,项]和<代码>[项目,…数组)> <李>

铬76

<李>

火狐68

<李>

Safari 12.1

以下是性能测试结果:

 javascript中怎么提高扩展运算符的性能

正如预期的那样,在Firefox和Safari浏览器中<代码> […数组,项]和<代码>[项,…数组)具有相同的性能。

但是,在Chrome中,<代码> […数组,项]> [项目,…数组)快两倍。这是一个有用的结果。

要在Chrome中提高扩展运算符的性能,请在数组文字的开头使用扩展运算符:

const  result =,[……数组,,项目];

但另一个问题出现了:这种问题怎么引起的?

从V8引擎的7.2版本之后,为中铬的JavaScript执行提供支持,可以对扩展运算符进行新的优化:<强>快速路径优化

用几句话描述它的工作原理,如下:

如果没有这个优化,当引擎遇到扩展运算符<代码> […iterable,项]时> iterator.next()>

但是<强>快速路径优化强检测到已知的可迭代(如整数数组)并完全跳过迭代器对象的创建。然后引擎读取扩展数组的长度,仅为结果数组分配一次内存。然后通过索引传播数组,将每个项目添加到结果数组中。

快速路径优化会跳过迭代对象的创建,只为结果分配一次内存。从而性能提高。

支持的数据结构

快速路径优化适用于以下标准JavaScript数据结构。

<强>数组

const  numbers =, (1,, 2,, 3,, 4];      […数字,5];,//,=祝辞,[1,,2,,3,,4,,5]

<强>字符串

const  message =, & # 39;你好# 39;;      […消息,& # 39;! & # 39;];,//,=祝辞,[& # 39;h # 39;,, & # 39;我# 39;,,& # 39;! & # 39;]

javascript中怎么提高扩展运算符的性能