2010-12-28 2 views
1

Я разрабатываю приложение Rails 3, развернутое на Heroku, которое хотелось бы оптимизировать. Я изучил различные решения, такие как query_reviewer или New Relic.Инструмент оптимизации для Rails 3 в разработке?

Я не мог заставить query_reviewer работать с Rails 3.0.1 (также мне пришлось переключиться на MySql, потому что PostgreSQL не поддерживается).

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

Таким образом, ни один из этих инструментов не соответствует моим потребностям.

Любые советы? Может быть, я должен просто полагаться на следы журнала и уменьшать количество SQL-запросов?

ответ

1

Вы хотите узнать, какие действия не являются абсолютно необходимыми и сэкономили бы много времени, если бы вы могли «обрезать» их?

Простите меня за то, что вы один трек-ответчик, но есть простой способ сделать это, и его легко продемонстрировать.

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

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

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

+0

Спасибо за быстрый ответ :) Я ценю ответ, но я хотел что-то более автоматизированное , так как некоторые запросы занимают слишком мало времени, чтобы нажать Ctrl-C. – Jose

+0

@Jose: Если программа заканчивается до того, как я получаю возможность прервать ее, я завершу цикл вокруг нее, чтобы сделать все 10, 100 или 1000 раз. Затем я прерываю его. После обнаружения и устранения проблем я удаляю внешний контур. Вам не нужно беспокоиться о том, чтобы поразить какой-либо конкретный запрос, потому что вы ударите все, что занимает большой процент времени. Если вы не ударили по этому запросу, это связано с тем, что этот запрос не является проблемой производительности, а то, что он нажимает *, - это проблема с производительностью. Вероятно, это то, чего вы не ожидали. –