Являются ли Symfony и CakePHP слишком медленными, чтобы их можно было использовать?


До сих пор я всегда говорил, что CakePHP слишком раздутый и медленный. Я действительно не знаю этого, я просто видел "некоторые" ориентиры. Что я действительно хочу знать, так это то, что если эти два фреймворка (Symfony и CakePHP) слишком медленные, чтобы их можно было использовать, пользователь будет разочарован. Я уже знаю, что эти структуры медленнее, чем другие альтернативы, но это не вопрос.

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

Итак, в заключение, в дополнение к первому вопросу выше, я хотел бы задать еще один вопрос:

Если я хочу создать инструмент управления проектом (который является довольно большим проектом), какой из следующих вариантов вы должны предложить, учитывая время разработки, скорость полученного приложения и надежность конечного продукт:

  • Symfony
  • CakePHP
  • Zend Framework

Также я должен упомянуть, что я не знаю ни одного из этих фреймворков, и что я хочу изучить один из них (по крайней мере).

4 17

4 ответа:

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

Однако то, что вам нужно посмотреть, - это компромисс. Фреймворки жертвуют небольшой производительностью ради возможности значительно сократить время разработки. Что для вас важнее-чистая производительность или достаточно быстрое время разработки? Facebook не будет использовать фреймворк RAD для своего сайта, но это потому, что производительность для них стоит больше, чем добавленное время разработки. Точно так же небольшая компания с одним разработчиком, скорее всего, выиграет от фреймворка больше, чем от разумно малой производительности (я говорю "небольшой", потому что влияние на каждый просмотр страницы минимально. Эффект "складывается" с более высоким движение).

То, что я предлагаю, - это взглянуть на кучу фреймворков. Попробуйте их (большинство из них имеют" блог " учебник). Почувствуйте, как они работают. Выберите тот, который вам нравится, а затем немного поиграйте с ним. Изучите его стиль кодирования и то, как он любит делать вещи... Самое главное, узнать, как он функционирует. Попытайтесь узнать "почему" за деталями. Способность использовать фреймворк ИМХО напрямую связана с пониманием того, как он работает... Не используйте что-то вам неудобно пользоваться без крайней необходимости. Найдите тот, который" подходит " вам, а затем придерживайтесь его до тех пор, пока вы не станете беглым...

Я рекомендую cakePHP v1. 3, потому что он быстрее и понятнее. Вы найдете очень хорошую справку (документацию и учебные пособия), связанную с этим фреймворком. Документация хорошо написана. Даже если вы застряли где-то вы сможете найти решение на stackoverflow или cakephp Google group или путем поиска в google.

Я работал над обеими версиями cakephp (1.2 и 1.3) , и я также попробовал руку на Zend framework (я тоже попробовал свой уровень лучший, но застрял в рамках, когда дело дошло до реализации макетов).

Но после того, как я потратил больше года на cakephp, я с гордостью могу сказать, что это лучший фреймворк для работы.

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

У меня есть сайты, работающие с symfony, которые довольно быстры, бенчмарки приближаются к оригинальному статическому HTML-шаблону.

Проблема производительности может возникнуть быстрее при использовании фреймворка( и доктрины типа ORM), чем при размещении кода spagetti внутри HTML статическая страница. Это звучит нормально для меня : больше обращений, больше проверок, зависимостей режимов, больше кода для разбора и т. д.

Если вы хотите сделать приложение быстрее, они в основном к путям:

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

С хорошо разработанным приложением MVC вы можете управлять производительностью как изолированной проблемой, используя профилировщик для просмотра узких мест приложения и обработки их по одному (опять же, оптимизация может быть также на аппаратной стороне).

Выбор PHP фреймворка не следует делать на различных тестах производительности seens на блогах arcticles, они не могут быть объективными. С моей точки зрения, все основные фреймворки MVC могут быть использованы для построения эффективные сайты, это все вопрос оптимизации.

Если вы и ваша команда более известны Symfony, CakePHP или Zend, то идите на это. Вы справитесь с оптимизацией производительности, как только ваше приложение станет функциональным, есть решения для любых фреймворков.

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

Различия будут незначительными, потому что ваши медленные части всегда будут I/O - база данных, файловая система и т. д. Убедитесь, что у вас есть хорошая стратегия кэширования данных и не делайте ничего слишком возмутительно глупого в коде, и это не будет иметь значения.