Rasmus (изобретатель PHP) не очень любил cakephp, потому что у него (он тестировал некоторое время назад, чтобы все могло измениться) действительно плохая производительность. Он больше всего любил codeigniter, потому что у него была лучшая производительность. Ниже цифры (производительность):
CakePHP:
Response time: 0.19 secs
Transaction rate: 25.88 trans/sec
CodeIgniter:
Response time: 0.03 secs
Transaction rate: 305.90 trans/sec
Как вы можете видеть, это было чертовски медленно (могло измениться. Вы должны сделать простой тест и проверить, чтобы быть уверенным, я думаю).
Фреймворк без фреймворка
У него также есть эта статья , объясняющая, как он будет писать свою архитектуру (без фреймворка для лучшей производительности).
в заключении он говорит:
Многие рамки могут выглядеть очень
привлекательный на первый взгляд, потому что они
похоже уменьшить веб-приложение
развитие до пары тривиальных
шаги, ведущие к генерации кода
и часто автоматическое обнаружение схемы,
но эти самые горячие
быть вашими узкими местами, так как они
достичь этой простоты, жертвуя
гибкость и производительность.
Выход на диск станет настоящим убийцей производительности.
Это самый важный совет, который вы должны иметь в виду.
Мои советы по производительности
- Используйте последнюю версию php (5.3), потому что я прочитал, что она значительно улучшила скорость по сравнению со старыми версиями.
- Убедитесь, что у вас достаточно памяти. Вам нужно хранить много данных в памяти, чтобы получить хорошую производительность.
- Вам действительно нужен APC (сконфигурируйте его правильно) для достижения хорошей производительности, потому что он поместит код операции PHP в память, что даст вам огромный импульс.
- Вы должны хранить ваш активный набор данных в памяти, используя redis / memcached / и т. Д.
- Если вам нужно выполнять длительные задачи, обрабатывайте их через очередь сообщений (redis / gearmand / kestrel / etc)
- Следуйте рекомендациям YAHOO , чтобы ускорить работу вашего сайта.
- Не используйте тяжелый PHP-фреймворк. Используйте что-то вроде Codeigniter (сравните его).