Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

CI занимается чёрт-те чем

Только для тех, кто понимает.
vigil
Сообщений: 1
Зарегистрирован: 11 сен 2013, 21:53

CI занимается чёрт-те чем

Сообщение vigil » 11 сен 2013, 23:51

Копался тут в системе, ради интереса прогнал её под профайлером и был немало удивлён результатом: одно только шифрование cookies отнимает на демо–данных аж до 20% производительности! То есть, с ним у меня сайт отрабатывает за 0.19с, без него — за 0.15с.

С этим выяснились интересные вещи, опровергающие мнение о том, что CI — быстрый фреймворк:

Во–первых, тормозит не само шифрование, а пара функций _add_cipher_noise / _remove_cipher_noise, якобы повышающие криптостойкость (на самом деле они бесполезны), написаны эти функции бездарно и добавляют в сумме три тысячи (!) вызовов. Да их можно как бенчмарк использовать! :-)

Во–вторых, и без того тормозное шифрование вызывается по одному разу на каждую изменяемую переменную в сессии. По уму надо бы накапливать изменения внутри синглтона сессии и делать их сброс в деструкторе, но тут каждое изменение применяется сразу. То есть, если плагинам потребуется ещё 4–5 переменных, вызовов станет не три тысячи, а десять. А если бы сессия хранилась в базе данных, на каждое изменение был бы отдельный запрос.

Ну и в–третьих, для надежности сессию все–таки следует хранить в базе данных, так как если плагину потребуется сохранить несколько десятков килобайт данных (например, если сделать плагин для сохранения черновиков), в куках пользователя кончится место и его без лишних слов просто выкинет из системы, добавив разработчику головной боли. Это не говоря уже о том, что сейчас в куки пользователю уходит его зашифрованный user-agent :-)

В профайле, кстати, несколько много других дуростей найти — ActiveRecord использует порядка 600 регулярных выражений, сам движок делает file_exists двести раз (вот это ужас как плохо под нагрузкой).

Собственно, интересует мнение разработчика — следует мне исправлением всего этого заниматься, или и так всё неплохо? Думаю, что где–то за месяц работы смогу систему ускорить ещё в два раза, отказавшись в некоторых местах от CodeIgniter–а :-)

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: CI занимается чёрт-те чем

Сообщение MAX » 13 сен 2013, 21:30

Непонятно в чем ускорение? Отключить шифрование можно и обычной опцией в конфигурации. В любом случае, если есть какие-то замечания по CodeIgniter, то однозначно лучше всего это сделать на гитхабовской странице фреймворка: https://github.com/EllisLab/CodeIgniter/

Аватар пользователя
searchingman
Модератор
Сообщений: 1392
Зарегистрирован: 28 май 2012, 16:02

Re: CI занимается чёрт-те чем

Сообщение searchingman » 14 сен 2013, 13:16

vigil писал(а):Собственно, интересует мнение разработчика — следует мне исправлением всего этого заниматься, или и так всё неплохо? Думаю, что где–то за месяц работы смогу систему ускорить ещё в два раза, отказавшись в некоторых местах от CodeIgniter–а :-)

Сделайте и через месяц посмотрим на "ускорение".

mixar
Модератор
Сообщений: 333
Зарегистрирован: 14 окт 2009, 11:09

Re: CI занимается чёрт-те чем

Сообщение mixar » 19 сен 2013, 21:10

У меня проект на MS 0.53, уже работает 3-ий год, 15000-20000 уников в сутки:
Время: 0.1300 | SQL: 37 | Память: 1.51MB

И это с минимальным кешированием (кешируется несколько виджетов, которые вызываются на каждой странице), на сервере крутится еще проектов 20 и постоянно пасутся поисковые роботы и роботы Яндекс Новостей, Гугл Новостей и Рамблер Новостей, так что не все так плохо;) Apache выкинул еще в 2011 году, работает на связке FreeBSD+nginx+php-fpm 5.3+eAccelerator+MariaDB
[url=http://www.codeigniter.ru]CodeIgniter по-русски[/url] | [url=http://freebsd.pro]FreeBSD Community[/url]


Вернуться в «if (!is_type('Programmer')) die('not for you');»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей