Как стать автором
Обновить

Комментарии 14

А что Moment такого делает, что это занимает три секунды?
5к раз считает свой объект из строки датавремя произвольного формата

Так на сколько я понял кастомное решение тоже создает moment обьект. Возникает вопрос почему указание формата не сработало.

И какой вывод? Что функция, написанная для стотыщмильйонов проектов, будет работать медленнее, чем функция, написанная для одного? Кэп.
Использовали moment.js на фронте, но тянуть 60кб бандл, который занимал треть всего преложения, оказалось слишком дорого. Сейчас есть новые библиотеки которые могут частично или полностью заменить moment.js. Сравнение альтернатив. Мы используем. Не реклама, может просто кому то пригодится.
НЛО прилетело и опубликовало эту надпись здесь
Tree shaking не даст никакого результата в случае с moment.js

Это сработает только в том случае, когда сторонние библиотеки не используют moment, и не тянут его в качестве зависимости. В обратном же случае вариантов не так много, например можно "изобретать велосипед", однако это не всегда возможно.

Похоже на хак, может в любой новой версии поменяться структура объекта. Не зря они, они эти свойства пометили нижним подчеркиванием, как приватные свойства.

Похожий хак в своё время применили для cytoscape.js — тоже пришлось влезть в приватные поля и подменить одну функцию, чтобы пользователь мог таскать узлы по экрану, и после этого layout уже не мог их сдвинуть. До сих пор не вполне этим доволен, особенно учитывая, что мы работаем с TypeScript, и этот кусок весь был сплошь усыпан as any (потом его переписали слегка поприятнее), но оно работает так, как нужно заказчику, а это здесь главное.

Что-то тоже интересно стало. Стоит отметить, что полученное решение все же быстрее практически в 2 раза.


https://jsperf.com/moment-parse-date

Да, быстрее. Из-за того, что объект моментжс создается. Надо смотреть, зачем он там дальше используется и нужен ли он. Но я бы первой оптимизацией все равно бы сделал именно это и, с вероятностью процентов так 90, на этом бы остановился, так как это примерно в ~18 раз быстрее и, вероятно, этого было бы достаточно.

Нужен или нет это уже совершенно другой разговор. А так да, подобная оптимизация решила бы проблему, без необходимости вкорячивать подобные костыли, зависящие от инкапсулированной логики сторонних библиотек.


Да еще и работает этот парсер не правильно

Зарегистрируйтесь на Хабре, чтобы оставить комментарий