Aman
у людей перегрузка инфы наоборот, имхо
Khangeldy
Что быстрее двойной for или двойной reduce?
Дима
Тебя это волновать не должно
Алексей
Настало время экономить на спичках
Ян
скоро пойдут ассемблерные вставки
Дима
Я сейчас оптимизирую по скорости модуль pipe / compose
Дима
Для ощущения разницы for / reduce приходится давать серьёзную нагрузку
А ВОТ ТЕПЕРЬ ПАБЛИК
а я картинки сжал
Дима
а я картинки сжал
Я не в плане того что проект ускоряю, я просто делаю самую быструю реализацию pipe / compose и поэтому зависаю в бенчах
Serhii
Самая быстрая по сравнению с чем
Serhii
Жкверийным?
Дима
Самая быстрая по сравнению с чем
Реализации в redux, Ramda и lodash уже обогнал
Дима
Очень круто на самом деле осознавать что смог обогнать лодаш))
Serhii
И сколько минимум нужно данных чтобы увидеть разницу?
Дима
Compose длиной в типичный редакс стейт
Khangeldy
Что быстрее двойной for или двойной reduce?
Lodash flatten для объектов есть?
Дима
Но я пока рассуждаю в op / sec, а человеческие выводы пока только в процессе
Дима
Пока расклад такой
Дима
Дима
При том, что у меня модуль принимает массивы функций любой вложенности
Алексей
что-то мне кажется, что производительность может меняться, причём довольно значительно в зависимости от JS движка
Дима
Да
Дима
Три этапа — определиться с наиболее быстрым подходом, сформировать наиборее реалистичные бенчи, оптимизировать на различных движках
Дима
Вот я пока на втором этапе
Алексей
поэтому я на самом деле не могу согласиться с таким вниманием к производительности, понятное дело, что производительность - это важно, но на мой взгляд о производительности нужно думать в последнюю очередь
Алексей
а если уж и думать, то в правильном ключе
Дима
Ты о производительности не должен думать вообще
Алексей
например делать упор на производительность в мобилках
Алексей
так как на десктопах нужно постараться, чтобы сделать просадку производительности
Дима
Ты должен писать свои задачи и проекты не думая о экономии на спичках. А о спичках должны думать создатели модулей
Алексей
Есть ещё задачи nodejs
Где слабыми местами обычно является дисковый и сетевой ввод-вывод.
Oleg
Сильно от задач зависит всё это
Oleg
Чаще не нужно оное, но вот когда нужно...
Таймураз
Сильно от задач зависит всё это
Кеп в студии Я хотел раньше написать это!
Oleg
Ну так тред пошел о том что оптимизация не нужна
Oleg
Пришлось надеть маску капитана
Алексей
вообще надо смотреть насколько часто будет дёргаться библиотека
Таймураз
Ну так тред пошел о том что оптимизация не нужна
Я имел ввиду, что согласен с тобой)
Oleg
А
Oleg
Ну тогда ок
Oleg
😄
Таймураз
И хотел скапитанить первее
Алексей
тот же React например должен быть оптимизирован по самые яйца, так как он дёргается ПОСТОЯННО
Таймураз
А еще я уверен, что если Ельцин задумался о производительности, то зазря он это не сделает
Алексей
и опять же, лучше даже оптимизировать по памяти, чем по быстродействию
Алексей
по крайней мере для фронтенда
Алексей
как мне кажется
Дима
Вот в этом вся и фигня
Таймураз
как мне кажется
Такие разговоры обычно за рюмочкой или бокальчиком вести надо)
Алексей
React != Redux
Дима
СПАСИБО БРО
Таймураз
так почти Новый год уже
Еще не свыкся с этой мыслью Надо шторы раздвинуть
Vlad
Сап, дай ссылку на свой репо
Vitaly
Сап, дай ссылку на свой репо
Вот и я бы посмотрел
Дима
Я пока локально пишу, ща выложу тогда
Дима
Модуль — ensue@beta
Vlad
давай
Дима
На идею меня натолкнула строка из тайпнгов ramda, ну где у них там на каждое число переданных функций свой pipeN
Дима
То есть можно развернуть все эти вычисления по switch/case и тем самым сэкономить значительное число вычислений
Vlad
const pipe3 = (f1, f2, f3) => (...args) => f1(f2(f3(...args)));
Vlad
можно быстрее написать?
Дима
Ага
Дима
const pipe3 = (f1, f2, f3) => (...args) => f1(f2(f3(...args)));
Смысл тот же, да, просто у них это объективно не очень оптимально
Vlad
мне кажется быстрее нельзя
Vlad
вангую у них перф проседает из-за аргументов
Дима
Да
Vlad
а кроме этого, ещё где-то?
Дима
Во вложенном вызове функций
Дима
У них pipe вызывает _arity, reduce и tail, а те дёргают следующие функции
Дима
Если писат такие низкоуровневые вещи, то желательно без таких вызовов обходиться
Vitaly
мы так и до кодогенерации скоро дойдем 😂
Дима
Ну уже близко, да 😄
Дима
Кстати хорошая мысль
Oleg
А если на ноде то можно и нативные модули