Как я могу определить скорость CodeIgniter?
Я думаю об использовании PHP-фреймворка под названием CodeIgniter .
Одна из вещей, которые меня интересуют, - это скорость. Однако у меня нет возможности узнать, насколько это быстро, и я бы предпочел не просто поверить на слово их веб-сайту. Кто-нибудь знает, как я могу сам определить его скорость, или кто-нибудь может сказать мне о сайте, который может?
Ответов (7)7
Code Igniter также имеет несколько встроенных инструментов тестирования: http://codeigniter.com/user_guide/general/profiling.html
Да, проблема в том, что вам нужно создать приложение, чтобы профилировать его.
На работе у нас было несколько внешних проектов, которые мы протестировали под нагрузкой, прежде чем поместить их в наши основные блоки. Мы были весьма удивлены, обнаружив критические проблемы с производительностью обоих; один был написан на CakePHP, а другой - на Drupal. Я не думаю, что это указывает на проблему какого-либо фреймворка или CMS, кроме необходимости выполнять профилирование и нагрузочное тестирование на любом сайте, который получит значительный трафик. В обоих случаях проблема была вызвана действиями разработчика, а не характеристиками программной платформы. Например, был рекурсивный вызов функции, созданный разработчиком в проекте Cake, который создавал экземпляр всего объекта Cake при каждой рекурсии, и это привело бы к отключению сервера, если бы он работал под нагрузкой.
На мой взгляд, производительность не должна быть решающим фактором при выборе фреймворка; объективные различия, вероятно, будут незначительными, и то, как вы их используете, может вызвать гораздо больше проблем с производительностью, чем внутренняя производительность фреймворка.
Я считаю, что для масштабирования любого PHP-приложения для работы под нагрузкой вам понадобится кеш-код операции, и вам нужно будет писать в интеллектуальном кэшировании контента, используя что-то вроде memcached или что-то вроде встроенного кеширования, которое поддерживает ваш фреймворк.
Для CodeIgniter и других фреймворков PHP PHP Quick Profiler очень удобен для тестирования и измерения скорости, особенно для запросов к базе данных. Вы должны проверить это: php-quick-profiler
Его очень легко установить и предоставляет отличный графический интерфейс для изучения различных тестов.
Я бы порекомендовал проверить это на себе. используйте профилировщик xdebug для создания файла, совместимого с cachegrind, и webgrind для визуализации файла.
таким образом вы получаете очень надежную информацию.
Если ваш сайт управляется базой данных, я был бы очень удивлен, если бы вашим узким местом была бы структура приложения. «Быстрая», как при более быстрой разработке, - это то, о чем я бы беспокоился, а не «быстрая», как при быстрой обработке запросов. Существенную оптимизацию лучше проводить с помощью стратегий кэширования и оптимизации доступа к базе данных.
Помимо доступа к базе данных ваш собственный код будет там, где большую часть времени для каждого запроса тратится (и даже это обычно не имеет значения по сравнению с доступом к базе данных), фреймворк, скорее всего, не повлияет на время, затрачиваемое на запрос, если только это не действительно плохо написано.
Было бы лучше найти фреймворк с хорошей поддержкой кеширования (который может быть у Code Igniter, я не знаю), который почти всегда сэкономит вам больше времени, чем несколько миллисекунд, которые вы могли бы сократить на обработку запроса, используя немного более быстрый фреймворк.
Взгляните также на Zend Framework, у него преимущество в том, что он является PHP 5, тогда как Code Igniter по-прежнему является PHP 4, насколько я понимаю. Это может быть проблемой, когда дело касается скорости, но в пользу какой структуры я не знаю. Zend имеет хорошую поддержку кэширования и профилировщик базы данных, который может помочь вам найти ваши узкие места.
CodeIgniter достаточно быстр для большинства проектов. Некоторые из них разместили здесь, и если вы погуглите, вы обнаружите, что он выгодно отличается от других фреймворков в отношении скорости.
Я согласен с другим автором, что производительность обычно не имеет большого значения, когда дело доходит до выбора фреймворка. Все основные фреймворки обладают достаточной производительностью для большинства проектов.
Я поддерживаю сайт, который несколько раз в год закрывают. В прошлом году команда разработчиков переписала весь сайт с помощью Codeigniter, и нам очень повезло с производительностью. Кроме того, время, необходимое для перезаписи, было минимальным, поскольку с этой структурой довольно легко работать. На мой взгляд, CakePHP также является хорошим выбором, если вы обнаружите, что вам не нравится Codeigniter.