Форум сайта python.su
Cool-Di
попробуй http://www.djangosnippets.org/snippets/186/
или runprofileserver заюзай с http://code.google.com/p/django-command-extensions/
на худой конец можно поиграться с http://github.com/robhudson/django-debug-toolbar/
Офлайн
спасибо всем за помощь
slav0nic Статистику вывел, но не очень то в ней разбираюсь. Вроде в картинках к Kcachegrind красиво все расписано, но запускается все только под линукс. Еле нашел программы для винды, и даже переконвектировать таблицы, но вылазят ошибки - красиво отобразить не получилось.
Еще если кто-нибудь не поленится объяснить как разбираться в профайлинге, вот что выдает у меня когда я профайлил главную страницу:
7249 function calls (6817 primitive calls) in 1.706 CPU seconds
Ordered by: internal time, call count
List reduced from 154 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
31 0.916 0.030 0.916 0.030 base.py:232(_valid_connection)
31 0.428 0.014 0.445 0.014 cursors.py:273(_do_query)
436/54 0.017 0.000 0.040 0.001 copy.py:144(deepcopy)
64 0.014 0.000 0.020 0.000 base.py:194(__init__)
62 0.014 0.000 0.017 0.000 query.py:1262(setup_joins)
33 0.013 0.000 0.024 0.001 query.py:473(get_default_columns)
53 0.013 0.000 0.058 0.001 query.py:150(clone)
31 0.011 0.000 0.483 0.016 cursors.py:129(execute)
601 0.010 0.000 0.012 0.000 query.py:134(quote_name_unless_alias)
31 0.009 0.000 0.075 0.002 query.py:251(as_sql)
434 0.009 0.000 0.009 0.000 copy.py:260(_keep_alive)
89 0.009 0.000 0.009 0.000 times.py:43(DateTime_or_None)
31 0.008 0.000 0.008 0.000 cursors.py:40(__init__)
31 0.008 0.000 0.010 0.000 cursors.py:309(_get_result)
492 0.008 0.000 0.008 0.000 base.py:143(quote_name)
31 0.007 0.000 0.015 0.000 __init__.py:154(last_executed_query)
31 0.007 0.000 0.507 0.016 util.py:16(execute)
31 0.007 0.000 0.017 0.001 cursors.py:282(_fetch_row)
33 0.006 0.000 0.046 0.001 query.py:1064(add_filter)
31 0.006 0.000 0.017 0.001 cursors.py:107(_do_get_result)
Отредактировано (Дек. 14, 2008 12:27:26)
Офлайн
красиво отображать нам и не надо)
ну как и следовало ожидать вся попа кроется в субд, теперь прикрути django-debug-toolbar и посмотри какие запросы идут в бд) возможно их сильно много, либо проблема с субд
а видишь ты - время выполнения ф-ций отсортированных по времени, как видно, в первых 2х строках идёт работа с субд
подробней http://docs.python.org/library/profile.html#cProfile.run
кстати, проверь число коннектов к бд, в час пик попробуй сам приконнектится к ней и сделать запрос и тп, странно что на _valid_connection тратится столько времени, в этом методе вроде 1 строка %)
у тебя джанга не старая часом?
Офлайн
А 20 запросов на странице много ? Если половина из них count
Офлайн
Для сферического приложения в вакууме и таких же запросах - не много. А так, it depends.
Офлайн
И все запросы я должен стараться оптимизировать? Нужно ли обращать внимание на запросы время которых выдает ‘time’: ‘0.015’ и меньше ?
Офлайн
Согласитесь, вы задаете странные вопросы Откуда же мы знаем. что вам надо оптимизировать? Мы понятия не имеем, что это за запросы, чего вы хотите добиться в результате и вообще как выглядит ваше приложение.
Для одних случаев это быстрые запросы, а для других медленные. Зависит от индексов, от наличия подзапросов, от СУБД и т.п. А может быть вообще проще в питоне что-то сделать и не тревожить базу. Всё зависит.
Суть в том. что вам должно быть виднее.
Офлайн