Home Web Front-end JS Tutorial What impact does for loop writing in JavaScript have on running efficiency?

What impact does for loop writing in JavaScript have on running efficiency?

Jul 19, 2017 pm 02:40 PM
javascript js efficiency

The impact of for loop writing on efficiency

In general, there are two ways to write for loop:

  1. No writing How to write a variable declaration: for(var i = 0;i<arr.length;i++){}

  2. 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:

  1. Make a test array variable that holds 40 million.

  2. Use two writing methods of for loop and foreach to traverse this test variable.

  3. On the same stable machine, conduct 10 tests and finally take the average.

  4. 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++;
}
Copy after login

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(&#39;foreach&#39;);
 var newArrs = [];
 testArrs.forEach(function(i){
 newArrs.push(i);
 });
 console.timeEnd(&#39;foreach&#39;);
}
Copy after login

For loop without declared variables:


function testNoDeclare(testArrs){
 console.time(&#39;no declare&#39;);
 var newArrs = [];
 for(var i = 0;i<testArrs.length;i++){
 newArrs.push(i);
 }
 console.timeEnd(&#39;no declare&#39;);
}
Copy after login

Writing method with variable declaration


function testUseDeclare(testArrs){
 console.time(&#39;use declare&#39;);
 var newArrs = [];
 for(var i = 0,len = testArrs.length;i<len;i++){
 newArrs.push(i);
 }
 console.timeEnd(&#39;use declare&#39;);
}
Copy after login

Execute test function

Executing the test function is very simple here, just call the function


testForeach(testArrs);
testNoDeclare(testArrs);
testUseDeclare(testArrs);
Copy after login

Test result

After 10 tests, the following results were obtained

foreachDo not write a statementWrite a statement
2372.891ms672.530ms743.974ms
2431.821ms710.275ms805.676ms
2422.448ms729.287ms741.014ms
2330.894ms730.200ms755.390ms
2423.186ms703.255ms769.674 ms
2379.167ms689.811ms741.040ms
2372.944ms712.103ms710.524ms
2316.005ms726.518ms726.522ms
2535.289ms733.826ms747.427ms
2560.925ms793.680ms817.098 ms
averageaverageaverage
2414.56ms720.15ms755.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)
{
被执行的代码块
}
Copy after login
  1. Statement 1: Execute before the loop (code block) starts

  2. Statement 2: Define the conditions for running the loop (code block)

  3. 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);
}
Copy after login

But! According to the above grammatical instructions, we can also write it like this


for(var i=10;i--;){
console.log(i);
}
Copy after login

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
}
Copy after login

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]
}
Copy after login

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Recommended: Excellent JS open source face detection and recognition project Recommended: Excellent JS open source face detection and recognition project Apr 03, 2024 am 11:55 AM

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 Remote Development Practical Guide: Improve Development Efficiency PyCharm Remote Development Practical Guide: Improve Development Efficiency Feb 23, 2024 pm 01:30 PM

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

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

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

Private deployment of Stable Diffusion to play with AI drawing Private deployment of Stable Diffusion to play with AI drawing Mar 12, 2024 pm 05:49 PM

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 The relationship between js and vue Mar 11, 2024 pm 05:21 PM

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.

Master Python to improve work efficiency and quality of life Master Python to improve work efficiency and quality of life Feb 18, 2024 pm 05:57 PM

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

Subnet mask: role and impact on network communication efficiency Subnet mask: role and impact on network communication efficiency Dec 26, 2023 pm 04:28 PM

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)

Learn to use sessionstorage to improve front-end development efficiency Learn to use sessionstorage to improve front-end development efficiency Jan 13, 2024 am 11:56 AM

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,

See all articles