bem / bh-php

PHP port of https://github.com/bem/bh. It's cool thing but better use this:
https://github.com/zxqfox/php-fpm-bem-demo-heroku
MIT License
33 stars 8 forks source link

perfomance, warm-up #18

Closed qfox closed 4 years ago

qfox commented 9 years ago

Added dumpFuel and warmUp method (to store compiled matchers right after match registration and load it on start).

/cc @uradvd85 @kompolom

Это ветка 4.0, но было бы хорошо, если бы вы запустили у себя.

bethrezen commented 8 years ago

Экономить ms и продолжать использовать eval для генерации matcher-ов - бесперспективная затея. Посмотрите мою реализацию через готовую анонимную функцию - https://github.com/DevGroup-ru/bh-php/blob/master/src/BH.php#L309-L413 Из плюсов:

Тесты проходит. Также в форке можно найти:

kompolom commented 8 years ago

@bethrezen Так может вы тоже PR пришлете?

bethrezen commented 8 years ago

@kompolom вы сначала посмотрите. Несмотря на то, что тесты проходят(а мне пришлось ещё дополнительно кое-что протестить) - есть сомнения, как бы побочных эффектов не вышло. К тому же, изменений крайне много:

Если в целом ок - оформим PR.

qfox commented 8 years ago

Да, в целом ок, изменения хорошие, хотелось бы это видеть здесь.

Про нейминг в целом были мысли использовать bem-naming, или реализовать его на php, там кода не много и лучше оформить как отдельный пакет. В JS критично грузить пару кБ лишнего кода, поэтому и функция прямо так используется. Ну и вообще, если вы используете этот нейминг в целом — то лучше передавать инстанс в конструктор при создании $bh, и там его использовать.

Про nestingLevel отписал в коммите. Кажется, что это избыточное, но если никто не против — то я тоже за.

qfox commented 8 years ago

@uradvd85 @kompolom Ребят, а вы можете у себя попробовать использовать патченную версию, чтобы время работы посмотреть?

bethrezen commented 8 years ago

nestingLevel для дебага очень полезно - так нагляднее, даже несмотря на то, что есть недоработочка с вызовом apply из шаблона. Лучше, чем ничего имхо.

qfox commented 8 years ago

Ну эту недоработочку можно исправить. Нужно просто в свойство складывать, и тогда внутренние apply будут вызываться с тем же уровнем. Т.е. не .html(ctx, level + 1); а $this->nestingLevel ++; $this->html(ctx); $this->nestingLevel--;

kompolom commented 8 years ago

@zxqfox попробуем в ближайшее время.

un1ko85 commented 8 years ago

@zxqfox обязательно попробуем

un1ko85 commented 8 years ago

@zxqfox У нас уже много чего на 4.1 подпилите?