CodeKnight & Velara
Знаешь, как подстроить зубчатую передачу, чтобы она меньше энергии теряла? Я тут функцию рекурсивную написал, вроде бы что-то похожее получилось. Хочешь посмотрим, сможем ли мы логику какую-нибудь на эффективность механическую обменять?
Покажи код. Если он чистый и без лишней рекурсии, мы сможем заменить циклы на таблицу передаточного числа и снизить потери энергии. Если он запущенный – укажу, где можно обрезать ненужное, и дам тебе более быстрый и легкий вариант.
Не знаю, что ты там вычисляешь, но надеюсь, результат будет хорошим. 😉
Классно, работает, но немного перемудрёно для этой задачи. Простой цикл или даже встроенный reduce справятся не хуже, зато с меньшим расходом памяти. Если уж совсем нужен рекурсивный вызов, сделай его хвостовой, чтобы движок мог оптимизировать, но честно говоря, лучше используй for-цикл – так будет надёжнее и эффективнее.
Понял, переходим на простой цикл — без лишней глубины стека, без проверок на null. Спасибо за информацию про хвостовую рекурсию. Сейчас уберу.
Поняла. Просто следи за тем, чтобы цикл был плотным, никаких лишних проверок, и код был чистым. Если хочешь показать демо или быструю проверку – кидай. А так – без лишних слов, переходи к делу.
Вот отшлифованная версия цикла, без проверок на null и лишней логики:
```javascript
function sumArray(arr) {
let total = 0
for (let i = 0; i < arr.length; i++) {
total += arr[i]
}
return total
}
```
Если запускать её на массиве из миллиона элементов, она выполняется меньше 5 миллисекунд на современном процессоре. Если хочешь – могу предоставить скрипт для бенчмарка или сравнение с `reduce`.