Сравнительное тестирование направляющих Запросы ActiveRecord

Я надеюсь сравнивать нескольких своих запросов ActiveRecord в моем приложении. Как что самый простой путь в консоли для сравнительного тестирования чего-то

User.find_by_name("Joe").id

по сравнению с

User.find(:first, :select => :id, :conditions => ["name = ?","Joe"]).id

Спасибо

12
задан Splashlin 5 August 2010 в 21:16
поделиться

2 ответа

Используйте скрипт / производительность / тестер:

script/performance/benchmarker 2000 "User.find_by_name('Joe').id" "User.first(:conditions => {:name => 'Joe'}, :select => 'id').id"

На моей машине разработчика это сообщает:

            user     system      total        real
#1      1.110000   0.070000   1.180000 (  1.500366)
#2      0.800000   0.050000   0.850000 (  1.078444)

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

RAILS_ENV=production script/performance/benchmarker 2000 "User.find_by_name('Joe').id" "User.first(:conditions => {:name => 'Joe'}, :select => 'id').id"

Это может немного изменить условия для вас.

2
ответ дан 2 December 2019 в 03:32
поделиться

В режиме разработки каждый запрос рассчитывается по времени и регистрируется в log / development.log. У вас будут строки вроде:

Ad Load (1.4ms)  SELECT "ads".* FROM "ads" ORDER BY created_at DESC
4
ответ дан 2 December 2019 в 03:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: