PROG_WAY_BLOG Telegram 196
Какой цикл в JS самый быстрый

Из серии занятного. Наткнулся на занятную статью, где описывается какой цикл в JS самый быстрый. Если коротко, то обычный for.

Было уже много бенчмарков на тему того такой цикл быстрее чего-то вроде forEach или for..in и for..of , так что это мы возьмем за данное. А вот что действительно интересно, так это то, что стандартный вариант записи цикла for не является самым эффективным:

for (let i = 0; i < arr.length; i++) {
// какой-то код
}


А всё почему? Потому что мы постоянно обращаемся к arr.length, что по своей сути — геттер, а геттеры всегда работают медленнее обычного обращения к переменной. Тогда можно прибегнуть к хаку, когда длина массива вычисляется заранее и присваивается к переменной лишь единожды:

const arrLength = arr.length;

for (let i = 0; i < arrLength ; i++) {
// какой-то код
}


Но вот что автор не упоминает, так это то, что можно избежать такой записи и использовать просто обратный цикл:

for (let i = arr.length - 1; i >= 0 ; i--) {
// какой-то код
}


Таким образом мы обратимся к длине массива только единожды и максимально выиграем время.

Если честно, не могу придумать практического примера, где это было бы реально полезно, но если вы безудержно гоняетесь за скоростью выполнения кода где-нибудь на литкоде, то может быть интересно. На практике я такие конструкции обычно не вижу, так как разница не значительная, но шутка ли, такой вопрос реально спрашивали на собесе у одного из моих менти.

Спасибо за прочтение, это важно для меня ❤️

#theory #javascript
👍6216🔥12🐳21



tgoop.com/prog_way_blog/196
Create:
Last Update:

Какой цикл в JS самый быстрый

Из серии занятного. Наткнулся на занятную статью, где описывается какой цикл в JS самый быстрый. Если коротко, то обычный for.

Было уже много бенчмарков на тему того такой цикл быстрее чего-то вроде forEach или for..in и for..of , так что это мы возьмем за данное. А вот что действительно интересно, так это то, что стандартный вариант записи цикла for не является самым эффективным:

for (let i = 0; i < arr.length; i++) {
// какой-то код
}


А всё почему? Потому что мы постоянно обращаемся к arr.length, что по своей сути — геттер, а геттеры всегда работают медленнее обычного обращения к переменной. Тогда можно прибегнуть к хаку, когда длина массива вычисляется заранее и присваивается к переменной лишь единожды:

const arrLength = arr.length;

for (let i = 0; i < arrLength ; i++) {
// какой-то код
}


Но вот что автор не упоминает, так это то, что можно избежать такой записи и использовать просто обратный цикл:

for (let i = arr.length - 1; i >= 0 ; i--) {
// какой-то код
}


Таким образом мы обратимся к длине массива только единожды и максимально выиграем время.

Если честно, не могу придумать практического примера, где это было бы реально полезно, но если вы безудержно гоняетесь за скоростью выполнения кода где-нибудь на литкоде, то может быть интересно. На практике я такие конструкции обычно не вижу, так как разница не значительная, но шутка ли, такой вопрос реально спрашивали на собесе у одного из моих менти.

Спасибо за прочтение, это важно для меня ❤️

#theory #javascript

BY progway — программирование, IT




Share with your friend now:
tgoop.com/prog_way_blog/196

View MORE
Open in Telegram


Telegram News

Date: |

There have been several contributions to the group with members posting voice notes of screaming, yelling, groaning, and wailing in different rhythms and pitches. Calling out the “degenerate” community or the crypto obsessives that engage in high-risk trading, Co-founder of NFT renting protocol Rentable World emiliano.eth shared this group on his Twitter. He wrote: “hey degen, are you stressed? Just let it out all out. Voice only tg channel for screaming”. Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. The creator of the channel becomes its administrator by default. If you need help managing your channel, you can add more administrators from your subscriber base. You can provide each admin with limited or full rights to manage the channel. For example, you can allow an administrator to publish and edit content while withholding the right to add new subscribers. End-to-end encryption is an important feature in messaging, as it's the first step in protecting users from surveillance. Judge Hui described Ng as inciting others to “commit a massacre” with three posts teaching people to make “toxic chlorine gas bombs,” target police stations, police quarters and the city’s metro stations. This offence was “rather serious,” the court said.
from us


Telegram progway — программирование, IT
FROM American