Я делаю некоторую оптимизацию в своем приложении Rails (2.3.5) и, похоже, не могу найти элегантный способ сравнительного анализа цепочки фильтров. Я тестирую сайт с чем-то вроде:
ab -n 200 -c 3 -i -k http://localtestingserver:80/test
/test ничего не настраивается в контроллере и ничего на странице, поэтому он просто загружает нашу цепочку фильтров по умолчанию и отрисовывает макет. Я получаю в среднем 86 мс на запрос, хорошо.
Когда я отключаю фильтры (skip_filter filter_chain) он падает до 37 мс, а без лейаута (render :layout => false) падает до 16 мс. Есть ли способ, которым я могу сравнить, возможно, с помощью Benchmark.realtime, каждую функцию, загружаемую в цепочке фильтров, до вызова контроллера (или даже после)? Могу ли я вывести хотя бы список всех фильтров, вызываемых по запросу?
Спасибо,
Дэн
Изменить
Я использую регистратор Hodel3000 и Oink, поэтому получаю вывод для каждого запроса, например:
Jan 27 17:56:55 testing rails[19611]: Memory usage: 98748 | PID: 19611
Jan 27 17:56:55 testing rails[19611]: Instantiation Breakdown: Total: 2 | Room: 1 | User: 1
Jan 27 17:56:55 testing rails[19611]: Completed in 240ms (View: 28, DB: 0) | 200 OK [/test]
Я просто хотел бы лучше понять и профилировать то, что происходит до вызова контроллера - я могу профилировать сами контроллеры. Например, откуда берутся дополнительные 212 мс в приведенном выше запросе. Очевидно, я мог бы поместить код в каждый из моих собственных фильтров before_filters, но надеялся, что есть способ обернуть каждый фильтр за один раз (например, фильтры из включенных драгоценных камней и т. д.).