mainameiz
@mainameiz
Full-stack web-developer

Почему mithril, vue, virtual-dom быстрее react?

Взять хотя бы эти тесты
jsperf.com/angular-vs-knockout-vs-ember/456
evancz.github.io/todomvc-perf-comparison (mercury использует virtual-dom)

С mithril я разобрался. Он быстрее из-за того что в нем есть throttling, но даже если делать force redraw он по-прежнему ощутимее быстрее react.

UPD: Вот еще мой бенчмарк: jsperf.com/mithril-vs-react/4 (использует force redraw у mithril)
Хотелось бы узнать в чем конкретные различия. Ведь они по сути делают одно и тоже (или я не прав и их некорректно сравнивать). Или в react есть какие-то доп. фичи, которых нет у остальных.

UPD: бенчмарк для сортировки списков (100 элементов) jsperf.com/list-sorting-in-react-vs-mithril-vs-vir...
Тут react быстрее в chrome, но медленнее в firefox (в обоих случаях разница - почти 2 раза)
  • Вопрос задан
  • 7358 просмотров
Решения вопроса 1
mainameiz
@mainameiz Автор вопроса
Full-stack web-developer
Кажется нашел ответ на свой же вопрос. Вкратце - у react.js не самая хорошая реализация dom-дерева. staltz.com/dont-react/#
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@lega
Тесты замеряют разные действия, где-то добавление, где-то изменения, одни фреймворки быстрее в одном, другие в другом, отсюда и разные результаты.
Ещё сами тесты вызывают сомнения, например в первом тесте у Angular.js приделан setTimeout что-бы не делать перерисовку на каждой итерации + при этом сам тест запускается не асинхронно - это "читерство".
А при выполнении теста с React у меня браузер дергается (видимо из-за особого контента который выводится) - это бъёт по производительности, - возможно это было нарочно сделано. Так же каждый последующий тест работает в поле где есть "мусор" от всех предыдущих тестов - это тоже может снижать цифры.

Тут есть хабра-тест (сделанный пользователями с хабра), он более менее причесан, тестирует добавление/изменение, но тут React тоже не блещет, возможно React хорош в каких-то специфических случаях, хотя я видел много бенчмарков с React, и он нигде не имел особого преимущества.

PS: Если вас не затруднит, не могли бы вы сюда добавить mithril или vue для сравнения.

Дополнил про React
Я особо не копал React, у меня такие мысли - они реализовали виртуальным DOM который максимально эффективно превращает один кусок документа в другой, проблема в том что на практике это не нужно - в других фреймворках делают просто сокрытие одного куска и показ другого куска - и это работает быстрее, чем перестройка DOM. Так же я слышал заявления, что React работает быстрее за счет того что они не делают чтения из DOM - видимо они сравнивают с jQuery (и vanilla js), т.к. в других MV* фреймворках, чтения из DOM делаются не часто (или только на стадии инициализации).
Ответ написан
Комментировать
xeLL
@xeLL
Fullstack web developer
Решил разобраться и читаю ссылку calendar.perfplanet.com/2013/diff, видимо из-за diff алгоритма, который использует реакт.
Ответ написан
@HungryGrizzzly
Сумасшедший кросс
Mithril гораздо проще в реализации, там нет такого большого количества хуков, он не на столько гибкий и т.д. vue, как мне кажется, это более удачная версия реакта в плане производительности
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы