Codeigniter: профилирование и производительность - PullRequest
6 голосов
/ 07 мая 2010

Я новичок в разработке приложений и CI в целом, поэтому у меня есть куча вопросов.

Что такое профилирование?Как это используется?Как это работает?Что считается «длинным» временем?

Что еще важнее,

Как использовать его для повышения производительности?

ПричинаЯ спрашиваю, ч / б мое приложение действительно вялое прямо сейчас.

Ответы [ 5 ]

10 голосов
/ 07 мая 2010

Как должно стать ясно, когда вы используете профилирование, оно используется, чтобы увидеть, насколько быстрыми являются аспекты страницы. Поместите эту строку в главном контроллере около начала (например, в конструкторе сразу после вызова конструктора родителя:

$ this-> output-> enable_profiler (TRUE);

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

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

Прочитайте https://www.codeigniter.com/user_guide/libraries/benchmark.html и начните размещать теги start и stop бенчмаркинга, где вы думаете, что это может вызвать медленные скорости, циклы и любые рекурсивные функции, - это первые места, которые вы должны проверить Как только вы найдете медленный сегмент кода, вам нужно найти способ его использования, который опять-таки представляет собой целую банку червей.

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

Edit: Просто хочу добавить, что вы не используете профилировщик CI или функции бенчмаркинга для повышения скорости, а только для того, чтобы найти, где скорость должна быть улучшена. Я знаю, что это мелочь, но подумал, что должен это указать.

9 голосов
/ 08 мая 2010

В настройках производительности, нижняя строка равна сколько времени занимает программа, в часы настенного времени, чтобы выполнить заданную задачу . Я знаю, это звучит как DUH , но это единственная концепция, с которой все могут согласиться.

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

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

НЕТ, СПАСИБО, я им сказал. Все, что мне нужно, это способ остановить его наугад и спросить что, черт возьми, он делает, и почему делает это . Это подход «случайно-на-ваш-на-рабочий-случайный-и-спроси-что он делает». Если я делаю это несколько раз, и значительная часть времени тратится менее продуктивно, то вероятность, что я его не поймаю, равна нулю.

Вот еще по теме.

1 голос
/ 07 мая 2010

Вот несколько потоков, которые я обнаружил, исследуя производительность и тестирование CI:

http://codeigniter.com/forums/viewthread/101804/P0/

http://www.haughin.com/2008/02/13/optimizing-and-scaling-your-codeigniter-application/

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

0 голосов
/ 14 декабря 2014

Вы можете использовать расширенный профилировщик, как XHPROF

http://code.tutsplus.com/tutorials/advanced-codeigniter-profiling-with-xhprof--net-24802

0 голосов
/ 20 декабря 2011

http://lonnieezell.com/blog/web-development/introducing-forensics-profiling-for-codeigniter/ Это хороший плагин для измерения производительности приложений на базе codeigniter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...