成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

有人測試了 JS 中所有循環的速度!來看看JS 中最快的循環是什么?

開發 前端
昨天看到有一位國外的大佬測試了 JS 中所有?【循環操作】?的性能消耗和執行速度。涉及到的 API 包含:for 循環、while 循環、ForEach、Map、Filter 等在內的 十余種 API。

Hello,大家好,我是 Sunday。

昨天看到有一位國外的大佬測試了 JS 中所有 【循環操作】 的性能消耗和執行速度。

涉及到的 API 包含:for 循環、while 循環、ForEach、Map、Filter 等在內的 十余種 API。

但是需要注意:以下測試內容【僅供參考】。因為實際的開發中,涉及到的場景要復雜的多,不能通過這種簡單的測試一概而論!

讓我們來看一看吧!

涉及到的 API 一覽:For 循環、While 循環、Do-While 循環、For-Of、forEach、map、filter、reduce、some、every、find 

測試方案

在測試中,將使用 console.time() 和 console.timeEnd() 方法來測量 API 的執行時間。偽代碼如下:

console.time ('描述信息') 
// 要測量的代碼
console.timeEnd ('描述信息')

測試任務是:將 5000 萬個數據從一個數組轉移到另一個數組。 通過執行時間,來判斷性能。

其中每個執行都將 異步 進行,以保證互不干擾。

執行代碼

// 生成隨機數據
const numbersList = Array.from({ length: 50_000_000 }, () =>
  Math.floor(Math.random() * 100)
)

// For 循環
const usingForLoop = async (array) => {
  console.time('For 循環')

  const newNumbersList = []
  for (let i = 0; i < array.length; i++) {
    newNumbersList.push(array[i])
  }

  console.timeEnd('For 循環')
}

// While 循環
const usingWhile = async (array) => {
  console.time('WHILE')

  let i = 0
  const newNumbersList = []
  while (i < array.length) {
    newNumbersList.push(array[i])
    i++
  }

  console.timeEnd('WHILE')
}

// Do-While 循環
const usingDoWhile = async (array) => {
  console.time('DO WHILE')

  let i = 0
  const newNumbersList = []
  do {
    newNumbersList.push(array[i])
    i++
  } while (i < array.length)

  console.timeEnd('DO WHILE')
}

// For-Of 循環
const usingForOf = async (array) => {
  console.time('FOR OF')

  const newNumbersList = []
  for (const item of array) {
    newNumbersList.push(item)
  }

  console.timeEnd('FOR OF')
}

// ForEach 循環
const usingForEach = async (array) => {
  console.time('forEach')

  const newNumbersList = []
  array.forEach((item) => newNumbersList.push(item))

  console.timeEnd('forEach')
}

// Map 循環
const usingMap = async (array) => {
  console.time('map')

  const newNumbersList = array.map((number) => number)

  console.timeEnd('map')
}

// Filter 循環
const usingFilter = async (array) => {
  console.time('filter')

  const newNumbersList = array.filter((item) => true)

  console.timeEnd('filter')
}

// Reduce 循環
const usingReduce = async (array) => {
  console.time('reduce')

  const newNumbersList = array.reduce((acc, item) => {
    acc.push(item)
    return acc
  }, [])

  console.timeEnd('reduce')
}

// Some 循環
const usingSome = async (array) => {
  console.time('some')

  const newNumbersList = []
  array.some((item) => {
    newNumbersList.push(item)
    return false
  })

  console.timeEnd('some')
}

// Every 循環
const usingEvery = async (array) => {
  console.time('every')

  const newNumbersList = []
  array.every((item) => {
    newNumbersList.push(item)
    return true
  })

  console.timeEnd('every')
}

// Find 循環
const usingFind = async (array) => {
  console.time('find')

  const newNumbersList = []
  array.find((item) => {
    newNumbersList.push(item)
    return false
  })

  console.timeEnd('find')
}

// 執行循環操作
;(async () => {
  await usingForLoop(numbersList)
  await usingWhile(numbersList)
  await usingDoWhile(numbersList)
  await usingForOf(numbersList)
  await usingForEach(numbersList)
  await usingMap(numbersList)
  await usingFilter(numbersList)
  await usingReduce(numbersList)
  await usingSome(numbersList)
  await usingEvery(numbersList)
  await usingFind(numbersList)
})()

打印結果如下:

圖片圖片

【在當前測試場景下】,根據測試結果所示,可發現:

  • 原生的 For 循環依然是最快的循環方式
  • forEach 的耗時是 for 循環的 3 倍
  • For...Of 這種簡化的語法,性能耗時較高,是 for 循環的 4 倍,不如 forEach
  • forEach 的循環執行速度,竟然 不如 map
責任編輯:武曉燕 來源: 程序員Sunday
相關推薦

2024-09-26 12:33:29

JSAPI循環

2012-02-03 09:25:39

Node.js

2021-12-06 09:40:44

Pythonforwhile

2021-05-27 09:00:00

Node.js開發線程

2024-01-05 08:49:15

Node.js異步編程

2017-11-24 08:00:55

前端JSCSS

2022-06-21 15:00:01

Python語言循環方式

2015-05-19 09:28:17

網速

2018-07-19 08:49:47

Python編程語言測評

2025-03-17 08:30:00

JavaScript循環代碼

2023-04-28 15:20:37

JavaScript事件循環

2011-09-08 14:16:12

Node.js

2021-12-24 16:55:44

前端開發JavaScript

2022-07-28 08:34:59

事件委托JS

2022-06-29 08:37:03

事件循環JS 語言

2021-12-18 07:42:15

Ebpf 監控 Node.js

2023-01-31 16:43:31

?Node.js事件循環

2022-09-09 07:35:23

循環依賴Spring構造器

2022-08-18 09:51:50

Python代碼循環

2021-12-01 06:03:24

JS TrueJavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久精品免费看国产四区 | 国产一区二区三区免费视频 | 毛片视频免费 | 国产一区二区久久 | 羞羞视频免费观 | 精品国产成人 | 中文字幕在线免费视频 | 午夜影院毛片 | 成人免费大片黄在线播放 | 99久久婷婷国产综合精品首页 | 久久精品亚洲精品 | 99精品视频免费在线观看 | 岛国在线免费观看 | 中文二区| 中文字幕在线观看一区二区 | 四虎影院在线观看免费视频 | 欧州一区 | 欧美日一区二区 | 中文字幕在线视频免费视频 | 麻豆久久久9性大片 | 粉色午夜视频 | 日韩一级黄色片 | 免费黄色在线观看 | 欧美成人h版在线观看 | 免费观看www | 国产日韩精品一区 | 91精品国产综合久久婷婷香蕉 | 国产精品久久久久久久久久久久 | 久久精品国产亚洲 | 一区二区三区福利视频 | 国产美女自拍视频 | 超碰在线免费 | 免费不卡视频 | 国产98色在线 | 日韩 | 国产成人啪免费观看软件 | 日韩精品一二三 | 国产精品一区二区久久久久 | 午夜欧美一区二区三区在线播放 | 99爱在线视频 | 男人av在线播放 | 中文字幕不卡在线观看 |