voix
У решадоу DX лучше
Что такое DX?
Andrey
У решадоу DX лучше
с модулями + nyancss dx норм, если не нужно делать дизайн систему или много динамики
Andrey
Что такое DX?
developer experience
MVD
Ну по-логике вроде да.
почему тогда это быстрее чем concat?
Bogdan
reshadow
что такое dx?
artalar
с модулями + nyancss dx норм, если не нужно делать дизайн систему или много динамики
Ну у решадоу есть вообще все, это одновременно и универсальная и мощная штука. Нет, не серебряная пуля, но дает все крутое что придумано вообще сейчас при работе со стилями
Andrey
Ну у решадоу есть вообще все, это одновременно и универсальная и мощная штука. Нет, не серебряная пуля, но дает все крутое что придумано вообще сейчас при работе со стилями
для меня самый большой плюс решедоу в том, что можно задать какой-то маркап и дефолтные стили, а сверху уже прокидывать кастомные стили на любой элемент внутри, это очень круто для дизайн систем или ui китов
Evgeny
почему тогда это быстрее чем concat?
где свзяь между деструктуризацией и конкатом? Или ты имел ввиду спред оператор?
artalar
почему тогда это быстрее чем concat?
Забейте на О нотацию, имплементация каждого метода под капотом может быть сильно разная. Например includes у массива может работать с такой же скоростью, как и взятие свойства у объекта, в худшем случае (для объекта)
artalar
А минусы какие? Какие то ограничения? Значительно больше времени потратил?
Минус - молодой. Хотя протестирован может быть лучше некоторых хайповых решений
Evgeny
var a = [...arr]
это спред оператор
Danila
Меня и интересует какая имплементация у спреда) На что мне расчитывать. Если я в цикле буду юзать, то это O(n^2) уже
Рассчитывать на то, что каждый браузер это сделает по-своему, Ну и зависит от того, будешь ли ты транспилировать это
Danila
А есть способ скопировать массив быстрее чем за колво элементов?
В хроме конкат быстрее спреда для слияния массивов в два раза где-то
Evgeny
Меня и интересует какая имплементация у спреда) На что мне расчитывать. Если я в цикле буду юзать, то это O(n^2) уже
оно один фиг зависит от реализации и оптимизаций конкретного движка. Запусти например вот эти тесты в огнелисе и в хроме https://jsperf.com/spread-vs-concat-vs-push Результаты неплохо так отличаются
MVD
я бы не сказал
У меня это и вызвало вопрос. Как конкат может быть дольше
Danila
А как соптимизировать скопирование n элементов?
А что, это стало причиной тормозов?
Тимофей 🛴
А как соптимизировать скопирование n элементов?
У тебя реально из за этого тормозит?
Evgeny
А как соптимизировать скопирование n элементов?
ты учитывай, что js код проходит через транслятор. А вот в трансляторе вариантов реализации много
MVD
У меня ничего не тормозит. Я ACMщик и хочу понимать с чем работаю
Danila
artalar
Меня и интересует какая имплементация у спреда) На что мне расчитывать. Если я в цикле буду юзать, то это O(n^2) уже
К сожалению от версии к версии (движка) перф может сильно меняться (прям в разы) + он может быть разный на разных длинах массива. Самое универсальное и кроссплатформенное решение, которое я могу советовать [].slice(0)
Evgeny
У меня ничего не тормозит. Я ACMщик и хочу понимать с чем работаю
исходники хромиума открыты, можешь посмотреть, как там это реализовано=)
Andrey
У меня ничего не тормозит. Я ACMщик и хочу понимать с чем работаю
с жс, в котором такие оптимизации обычно боком выходят 👀
Evgen
ну в фф не дольше=)
push же не создает копию, вроде как ?
Danila
У меня ничего не тормозит. Я ACMщик и хочу понимать с чем работаю
С интерпритируемым языком, который JIT-компилится под один из нескольких стронних рантаймов, различающихся от версии к версии и от производителя к производителю. Так что тут всё сложно
artalar
У меня ничего не тормозит. Я ACMщик и хочу понимать с чем работаю
Ооо, вы явно не туда ринулись. ЖС - кто мир рантайм оптимизаций.., там такое может быть. Почитайте блог v8 - там самое свежее, подробное и при этом доступное. Так же можно найти хороший доклад Вячеслава Егорова на Ютубе про оптимизации перфа
Evgen
нет
ну а concat создает - вот и разница в скорости
Sergey
альтернатива?
1. Razzle 2. Своя сборка. Благо это не сложно
Evgeny
ну а concat создает - вот и разница в скорости
ну вообще речь шла о спреде и конкате
artalar
я бы не сказал
ЭТО ПОЛНАЯ ЖЕСТЬ НЕ ДЕЛАЙТЕ ТАК. Вы тестите перф на массивах разных типов, сначала числовом, потом строку добавляете, это крайне не правильный тест, там под капотом куча оверхеда из-за этого!
Sergey
я бы не сказал
Неправильно тест сделан
Sergey
Функции должны быть за пределами теста в init области
Sergey
я бы не сказал
Push сравнивать с concat. Ору
Sergey
Ты бы хоть все элементы пушнул
Evgeny
Тимофей 🛴
Push сравнивать с concat. Ору
А он правда быстрее)
Sergey
А он правда быстрее)
Засунуть один элемент или конкатить ВСЕ элементы
Evgeny
Push сравнивать с concat. Ору
рад за тебя. я просто нашел готовый тест
Sergey
И ничего не показывает
Sergey
Плюс конкат возвращает новый массив. А пуш нет
Evgen
ну вообще речь шла о спреде и конкате
Ну спред - это "обычный" фор луп, а конкат занимается созданием нового массива с внутренними механизмами и проверками
Тимофей 🛴
Засунуть один элемент или конкатить ВСЕ элементы
С тем что так делать не нужно я не спорю. https://dev.to/uilicious/javascript-array-push-is-945x-faster-than-array-concat-1oki
Evgeny
сейчас бы доколупываться до рандомного теста. Реально самое токсичное комьюнити
Maxim
сейчас бы доколупываться до рандомного теста. Реально самое токсичное комьюнити
Вы распространяете ложную и вредную информацию. Чего вы ожидали?.
Oleg
Elm
Ого)
Тимофей 🛴
Зачем сравнивать пуш и конкат?
Постоянно вижу всякие микрооптимизации в либах, типо map вместо forEach или string[0]===“” вместо startsWith. Наверное только ради бенчмарков
✙ Sergeant
Привет, подскажите пожалуйста, почему после вызова onLockTimeButtonClick вылетает ошибка lockTimeButtons.map is not a function?
Evgeny
Привет, подскажите пожалуйста, почему после вызова onLockTimeButtonClick вылетает ошибка lockTimeButtons.map is not a function?
как оно у тебя работает, если onLockTimeButtonClick объявлена после ее вызова?
✙ Sergeant
Это же колбек
Alexandr
Все равно ошибка
ты ее сразу вызвал onLockTimeButtonClick(b.id), это результат вызова
Тимофей 🛴
Ivan
Привет, подскажите пожалуйста, почему после вызова onLockTimeButtonClick вылетает ошибка lockTimeButtons.map is not a function?
вы точно хотите передавать столько параметров внутрь onLockTimeButtonClick? сначала все объекты по одному, потом массив из undefined и модифицированного элемента вы что-то не так поняли, да?
Ivan
мне нужно как-то определить id активной кнопки
посмотрите на useReducer useState для примитивов
✙ Sergeant
ты ее сразу вызвал onLockTimeButtonClick(b.id), это результат вызова
как сразу, если там () => onLockTimeButtonClick(b.id)
Roma
Дякую кицб