
Во времена, когда технологии развиваются быстрее, чем когда-либо, все нужно делать в кратчайшие сроки. Это похоже на то, как бизнес должен работать, как распряженные лошади, в свободной долине. Большинство будет утверждать, что спать некогда, а если и захочет, то вы останетесь позади!
В настоящее время стартапы могут продвигать продукт до выпуска за недели. Это время, когда «генеральный директор» всплывает с хорошей идеей, купите комбинацию: домен + хостинг-сервер + база данных (все в облаке) за пару сотен выберите хипстерскую кофейню, которую хотите назвать своим офисом, и через несколько месяцев вы услышите, что бизнес либо оценивается, либо продается за пару миллионов. это похоже на сон, не так ли?
С другой стороны, мы не должны забывать, что технологии холодны и жестоки. Каждый день нас бомбардируют, что мы должны действовать быстро, «как можно быстрее»,
как неоднократно повторяют самые известные лидеры нашего технологического поколения:
«Если вас не смущает первая версия продукта, значит, вы запустили слишком поздно». - Рид Хоффман, соучредитель LinkedIn
«Двигайтесь быстро, ломайте вещи» - Марк Цукерберг, основатель и генеральный директор Facebook
Все эти цитаты сильны, но опасны, они заставили технологическое сообщество поверить в то, что быстрое движение - единственный способ выжить; что во многих случаях может быть правдой. Напротив, это может создать высокий уровень стресса, что приведет к плохому менеджменту, что разрушит мотивацию, а инженеры / разработчики без мотивации - большие двери небрежность кода, которая не всегда обратима, приводит бизнес к самоубийству. Технологическая компания может выжить без генерального директора, главного операционного директора, технического директора ... Но не выжить без инженеров! Возьмем, к примеру, Uber.
Итак, как нам двигаться быстро и эффективно, как большие акулы? Это вопрос на миллион долларов ... Ответ тут же, я уже говорил об этом раньше: Облако!
Он предоставляет огромное количество ресурсов (при условии, что у вас есть деньги на это), что позволяет быстро начать, но очень сложно масштабировать, поскольку ресурсы становятся чрезвычайно дорого по мере роста компании. При этом, нет места тратить ресурсы, точка!
Javascript прекрасен, но опасен.
Теперь я собираюсь показать некоторые отходы, которые мы тривиально видим в исходном коде:
Массив: Array.filter () против Array.reduce ()

Приятно решить проблему парой строк кода, но иногда нам нужно внимательно посмотреть и оценить свой выбор, вот пример.
Требование: отфильтруйте все четные числа в массиве:
const evens = arr.filter(i => i % 2 === 0)
Это красиво, правда? Но проверьте, когда у нас есть массив из 10 миллионов элементов (что является обычным количеством для больших приложений).
Производительность:
THIS IS A DATA SET OF: 10000000 THIS IS THE RESULT FILTERED WITH Array.Filter: 5000000 Filter-Operation: 3173.370ms **********************************
Теперь давайте выполним ту же операцию с помощью Array.reduce
const evens = arr.reduce((acc, item) => {
if(item % 2 === 0) acc.push(item)
return acc
}, [])
И вот результат:
********************************** THIS IS A DATA SET OF: 10000000 THIS IS THE RESULT FILTERED WITH Array.Reduce: 5000000 Reduce-Operation: 438.371ms
Давайте добавим еще одно требование: что, если после фильтрации массива мы решим удвоить его значения.
//Beautifully tackled in one line of code. const evens = arr.filter(i => i % 2 === 0).map(i => i * 2)
Представление:
THIS IS A DATA SET OF: 10000000 THIS IS THE RESULT FILTERED WITH Array.Filter: 5000000 Filter-Operation: 6176.195ms **********************************
Опять же, с помощью Array.reduce:
const evens = arr.reduce((acc, item) => {
if(item % 2 === 0) acc.push(item * 2)
return acc
}, [])
Производительность:
********************************** THIS IS A DATA SET OF: 10000000 THIS IS THE RESULT FILTERED WITH Array.Reduce: 5000000 Reduce-Operation: 646.941ms
Мы говорим о разнице в производительности в 90% прямо здесь, просто принимая то, что проще, или просто пользуясь черным ящиком.
Примечание. Большое количество методов, предоставляемых Array, - это Операции-редукторы, что означает, что их можно воспроизвести / преобразовать с помощью Array.reducer. Пример: Array.Filter, Array.Map, Array.Every, Array.Sort и т. д.
Это был просто пример того, что иногда одно небольшое решение может изменить всю игру. Представьте себе 1 миллион пользователей, запрашивающих и фильтрующих такие наборы данных, это определенно может вызвать увеличение памяти или количества машин, реплицируемых на сервере. чтобы поддержать все это.
Вывод. Одна строчка кода может вынудить малые предприятия тратить на облачные ресурсы, которые они не могут себе позволить или даже не могут не нуждаться, если она хорошо протестирована.
Будьте внимательны, проверьте работоспособность кода!
Поделиться - это забота.