Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Интересно, какие вы делаете выводы, глядя на эту цифру в бэнчмарке?Очевидно, что одно и то же приложение на одном фреймворке быстрее приложения на другом. А вы делаете какие-то иные выводы? Расскажите о них по подробнее.
Хоть немного представляете о том на каких кэйсах kvo сосёт, а на каких vdom?Что такое «вдом» я уж догадался. Что такое «кво» — ума не приложу. Вы когда употребляете аббревиатуры, хотя бы раз их расшифровывайте, пожалуйста.
Почему вообще все эти идиоты вокруг начали придумывать dirty checking или virtual dom в то время как уже более десяти лет люди разрабатывали интерфейсы с использованием kvo, видимо эти идиоты просто так и не осилили всей красоты kvo :)Аргументация к авторитету, как мило.
И вообще лучше не делать никаких выводов, если нет глубокого понимания того как работают все современные библиотеки и почему они используют одно решение или другое.Ну, раз у вас есть глубокое понимание как работают эти библиотеки, значит вам не составит труда объяснить почему приложения на фреймворках, разрабытывающихся кучей высококлассных специалистов с более чем десятилетним стажем, и позиционирующихся как самые быстрые, проигрывают более чем в 2 раза на этом конкретном тесткейсе?
на многих подобных бэнчмарках либа начинает показывать потрясающую производительностьAngular 2 не удаляет элементы (в директиве *for) и вставляет их на следующей итерации. Но по моим экспериментам, эта техника дает 5-10% (ничего потрясающего). Насоздавать элементы не так «дорого» как их отрендерить.
Я не делаю никаких выводов, потомучто есть куча способов как можно реализовать TodoMVC с одной и той же либой для отображения UI, и результаты будут очень сильно отличаться.Именно, тем и хорошо проект ToDoMVC, что это не бенчмарк, а демонстрация читаемости кода на разных фреймворках. Именно поэтому реализация на VanillaJS получилась не самой быстрой. Если вы считаете, что решение на каком-то фреймворке можно ускорить без вреда для читаемости и поддерживаемости, и наоборот, что можно существенно улучшить читаемость и поддерживаемость ценой скорости, то пулреквесты приветствуются. Я не в состоянии в одиночку проверить идиоматичность всех 80 решений. Но основная миссия проекта — именно идиоматичный, а не быстрый код. И именно поэтому он хорош в качестве интегральной оценки скорости фреймворков. В отличие от многочисленных бенчмарков, где в код вставляют кучу костылей ради скорости, которые в реальном приложении никто не напишет кроме крайней нужды, когда фреймворк начинает жутко тупить на казалось бы простых задачах. Например, пользователи knockout вставляют throttl-инги, чтобы он не перерисовывал дом на каждый чих.
Какие-то реализации в этом бэнче вообще используют батчинг, а какие-то нет. Пихать всё в одну кучу и думать что одна либа быстрее другой потомучто она тупо не делала той же работы из-за батчинга, что и другие либы — это конечно отличный показатель производительности.В рамках одного фрейма группировать пересчёты допустимо и даже желательно. Типичная ситуация — сделали несколько запросов, они потупили секунду и скопом все прилетели — нужно отрендерить актуальное состояние, а не рендерить подряд все промежуточные. Тем не менее, тест занимает много фреймов — итерации исполняются по setTimeout (что, кстати, несколько сглаживает результаты, так что разница в скорости решений на самом деле даже больше, чем представлена на графике). Если какое-то решение рендерило только один раз в самом конце, то оно дисквалифицировалось. Не помню, были ли такие случаи, но многие решения пришлось исключить, так как они не проходили весь положенный цикл (создание задач через инпут, завершение всех задач, удаление задач по кнопке удаления). Если почините какое-либо из исключённых решений — пулреквесты приветствуются.
Key-Value Observing.
Например потомучто у фб приоритет на скорость изначального рендера и рендера большого куска дома при переходе между страницами, поэтому они готовы пожертвовать скоростью мелких точечных апдейтов, но сделать более быстрый рендер.Тогда при чём тут вообще VDOM? Для рендеринга больших кусков дома нет ничего быстрее, чем тупо сгенерить весь хтмл и отдать его браузеру, как в старые добрые времена jquery-templates, и не надо грузить мегабайтную библиотеку.
Или просто потомучто vuejs использует батчинг.Как я уже сказал, использует не больше необходимого. Но я сейчас проверил, у многих решений есть косяк — задачи не комплитятся. Буду сейчас разбираться что там не так, но погоды сильной этот этап не делает.
Разработка Mithril. Практика, опыт и подводные камни