S2 → Блог → 2011 → 05 → 18

Быстродействие S2

18 мая 2011 года, 22:41

Рассмотрим вопрос о быстродействии S2. Если говорить кратко, S2 настолько быстр, насколько это возможно :) Давайте разберемся, почему это так.

Во-первых, в движке нет ненужного хлама. В его ядре реализованы самые необходимые вещи. Редко используемые функции [могут быть] выполнены как расширения.

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

Перейдем от теории к практике. Сравним быстродействие S2 и WordPress. Важный параметр, влияющий на время сборки страниц, это количество запросов к базе данных. Обычно WordPress делает несколько десятков запросов, время сборки страницы составляет десятые доли секунды. Например, вот ресурсы для вывода главной страницы wordpress.org/news:

<!-- 19 queries. 0.277 seconds. -->

А вот для внутренней страницы:

<!-- 16 queries. 0.214 seconds. -->

В свою очередь, S2 в большинстве случаев делает не больше десятка (обычно 5 плюс-минус сколько-то) запросов к базе данных и тратит на сборку страницы несколько сотых долей секунды. Вы можете убедиться в этом, заглянув в подвал любой страницы на этом сайте.

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

Хотя безнадежное отставание WordPress уже очевидно, сравнение движков можно продолжить. Как показывают исследования, если в WordPress полностью отключить кеш, то будет сделано примерно полторы тысячи запросов к базе данных! Вообще удивительно, как можно было разработать движок блога, который принципиально способен сделать (то есть содержит код) полторы тысячи запросов!

В S2 тоже есть кеш (который, кстати, штатными средствами не отключается). Кеш S2 не хранит содержимое всех страниц. Он экономит всего лишь два запроса к базе данных, которые без него выполнялись бы на каждой странице. Первый запрос считывает параметры настройки (которые можно редактировать на соответствующей странице панели управления), а второй — код расширений из файлов manifest.xml. Отключение кеша не привело бы ни к каким катастрофическим последствиям.

Теперь вы знаете, почему S2 — простой и быстрый движок сайтов.

Комментарии

#1. 14 января 2013 года, 09:25. Рустам пишет:
Роман, скажите пожалуйста, какие другие схожие с S2 движки Вы могли бы посоветовать? Критерии следующие: быстрота, более менее аккуратный и чистый код, общий минимализм, простота, желательно частые обновления и сформировавшееся сообщество. Насколько Ваше детище лучше или хуже. Хотелось бы и сравнения с другими «монстрами», помимо Вордпресса, хотя бы краткого. Спасибо!
#2. 14 января 2013 года, 11:39. пишет:
Вы задаете сложные вопросы :)

Я думаю, что нельзя давать такие советы, просто установив движок на тестовый сервер. Нужно использовать движки на настоящих сайтах. Тогда и выявляются их основные достоинства и недостатки. У меня такого опыта не было.

В Вордпрессе же мне удалось немного ковырять код, когда однажды я переделывал какой-то плагин. Так что это сравнение было не голословным.

«Монстры», разумеется, обгоняют по темпам разработки, уровню поддержки и сообществу. И для пользователей это важнее того же чистого кода и быстроты.

В отзывах на форуме движок сравнивали с Danneo и ModX. Посмотрите, может сравнения справедливы: http://danneo.com/ и http://modx.com/

Оставьте свой комментарий

Ваше имя:

Комментарий:

Комментарии перед публикацией проверяются. Сообщения о небольших ошибках не публикуются, если ошибки исправляются сразу. Поддержка осуществляется только на форуме.
Для выделения используйте следующий код: [i]курсив[/i], [b]жирный[/b].
Цитату оформляйте так: [q = имя автора]цитата[/q] или [q]еще цитата[/q].
Ссылку начните с http://. Других команд или HTML-тегов здесь нет.

Сколько будет 68+3?