


What impact does for loop writing in JavaScript have on running efficiency?
The impact of for loop writing on efficiency
In general, there are two ways to write for loop:
No writing How to write a variable declaration:
for(var i = 0;i<arr.length;i++){}
How to write a variable declaration:
for (var i = 0,len = arr.length;i < len;i++){}
In addition to the for loop, there is alsoforEach()
, there are also articles saying that forEach()
is the most efficient, and it is recommended to use forEach()
. So which one is more efficient? Let’s do a test and see.
Test plan
The general test plan is as follows:
Make a test array variable that holds 40 million.
Use two writing methods of for loop and foreach to traverse this test variable.
On the same stable machine, conduct 10 tests and finally take the average.
Test environment: CPU: Inter(R) Core i5-3210M, RAM: 12GM, system: win10 (x64)
Test process
Making a test variable
First use a while loop to make a test variable. This is very simple. The details are as follows:
var testArrs = [], i = 0; while(i<40000000){ testArrs.push(i); i++; }
Write the corresponding test function
Code to measure and execute time, I use console.time()
And console.timeEnd()
for testing.
For these three for loops, first make three functions, they are
foreach loop test:
function testForeach(testArrs){ console.time('foreach'); var newArrs = []; testArrs.forEach(function(i){ newArrs.push(i); }); console.timeEnd('foreach'); }
For loop without declared variables:
function testNoDeclare(testArrs){ console.time('no declare'); var newArrs = []; for(var i = 0;i<testArrs.length;i++){ newArrs.push(i); } console.timeEnd('no declare'); }
Writing method with variable declaration
function testUseDeclare(testArrs){ console.time('use declare'); var newArrs = []; for(var i = 0,len = testArrs.length;i<len;i++){ newArrs.push(i); } console.timeEnd('use declare'); }
Execute test function
Executing the test function is very simple here, just call the function
testForeach(testArrs); testNoDeclare(testArrs); testUseDeclare(testArrs);
Test result
After 10 tests, the following results were obtained
foreach | Do not write a statement | Write a statement |
---|---|---|
2372.891ms | 672.530ms | 743.974ms |
2431.821ms | 710.275ms | 805.676ms |
2422.448ms | 729.287ms | 741.014ms |
2330.894ms | 730.200ms | 755.390ms |
2423.186ms | 703.255ms | 769.674 ms |
2379.167ms | 689.811ms | 741.040ms |
2372.944ms | 712.103ms | 710.524ms |
2316.005ms | 726.518ms | 726.522ms |
2535.289ms | 733.826ms | 747.427ms |
2560.925ms | 793.680ms | 817.098 ms |
average | average | average |
2414.56ms | 720.15ms | 755.83ms |
I wonder if the result surprised you? I didn’t expect that the most common way of writing is the most efficient. Why? I haven’t figured it out, so if anyone knows, please tell me, but I guess the way the statement is written is meaningless. Because len = arr.length
this arr.length
may have been cached, so it makes no sense for us to declare a len variable for storage.
Special way of writing for loop
The basic syntax of for loop is:
for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }
Statement 1: Execute before the loop (code block) starts
Statement 2: Define the conditions for running the loop (code block)
Statement 3: Execute after the loop (code block) has been executed
If we use a for loop to output 1 to 10, we can write:
for(var i=0;i<10;i++){ console.log(i); }
But! According to the above grammatical instructions, we can also write it like this
for(var i=10;i--;){ console.log(i); }
When I first read it, I was also confused, how could it be written like this? Statement 2 contains the loop condition, and i- is the judgment condition. In fact, in statement 2, if true is returned, the loop will continue to execute. In js, when 0,null,undefined,false,'',"" is used as a conditional judgment, the result is false, which means that when i- reaches 0, it is false, and the loop terminates.
Go back to the code at the beginning of the article
for (var i = 0, rule; rule = rules[i++];) { //do something }
This rule = rules[i++] is the judgment condition. When it becomes undefined, the loop will be terminated. So if this code is written in ordinary way, it would look like this:
for(var i = 0;i < rules.length;i++){ var rule = rules[i] }
In fact, it just puts judgment and assignment together, and assigns values while looping. Isn't it quite simple?
The above is the detailed content of What impact does for loop writing in JavaScript have on running efficiency?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Face detection and recognition technology is already a relatively mature and widely used technology. Currently, the most widely used Internet application language is JS. Implementing face detection and recognition on the Web front-end has advantages and disadvantages compared to back-end face recognition. Advantages include reducing network interaction and real-time recognition, which greatly shortens user waiting time and improves user experience; disadvantages include: being limited by model size, the accuracy is also limited. How to use js to implement face detection on the web? In order to implement face recognition on the Web, you need to be familiar with related programming languages and technologies, such as JavaScript, HTML, CSS, WebRTC, etc. At the same time, you also need to master relevant computer vision and artificial intelligence technologies. It is worth noting that due to the design of the Web side

PyCharm is a powerful Python integrated development environment (IDE) that is widely used by Python developers for code writing, debugging and project management. In the actual development process, most developers will face different problems, such as how to improve development efficiency, how to collaborate with team members on development, etc. This article will introduce a practical guide to remote development of PyCharm to help developers better use PyCharm for remote development and improve work efficiency. 1. Preparation work in PyCh

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

StableDiffusion is an open source deep learning model. Its main function is to generate high-quality images through text descriptions, and supports functions such as graph generation, model merging, and model training. The operating interface of the model can be seen in the figure below. How to generate a picture. The following is an introduction to the process of creating a picture of a deer drinking water. When generating a picture, it is divided into prompt words and negative prompt words. When entering the prompt words, you must describe it clearly and try to describe the scene, object, style and color you want in detail. . For example, instead of just saying "the deer drinks water", it says "a creek, next to dense trees, and there are deer drinking water next to the creek". The negative prompt words are in the opposite direction. For example: no buildings, no people , no bridges, no fences, and too vague description may lead to inaccurate results.

The relationship between js and vue: 1. JS as the cornerstone of Web development; 2. The rise of Vue.js as a front-end framework; 3. The complementary relationship between JS and Vue; 4. The practical application of JS and Vue.

Title: Python makes life more convenient: Master this language to improve work efficiency and quality of life. As a powerful and easy-to-learn programming language, Python is becoming more and more popular in today's digital era. Not just for writing programs and performing data analysis, Python can also play a huge role in our daily lives. Mastering this language can not only improve work efficiency, but also improve the quality of life. This article will use specific code examples to demonstrate the wide application of Python in life and help readers

The role of subnet mask and its impact on network communication efficiency Introduction: With the popularity of the Internet, network communication has become an indispensable part of modern society. At the same time, the efficiency of network communication has also become one of the focuses of people's attention. In the process of building and managing a network, subnet mask is an important and basic configuration option, which plays a key role in network communication. This article will introduce the role of subnet mask and its impact on network communication efficiency. 1. Definition and function of subnet mask Subnet mask (subnetmask)

To master the role of sessionStorage and improve front-end development efficiency, specific code examples are required. With the rapid development of the Internet, the field of front-end development is also changing with each passing day. When doing front-end development, we often need to process large amounts of data and store it in the browser for subsequent use. SessionStorage is a very important front-end development tool that can provide us with temporary local storage solutions and improve development efficiency. This article will introduce the role of sessionStorage,
