Я надеюсь сравнивать нескольких своих запросов ActiveRecord в моем приложении. Как что самый простой путь в консоли для сравнительного тестирования чего-то
User.find_by_name("Joe").id
по сравнению с
User.find(:first, :select => :id, :conditions => ["name = ?","Joe"]).id
Спасибо
Используйте скрипт / производительность / тестер:
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"
Это может немного изменить условия для вас.
В режиме разработки каждый запрос рассчитывается по времени и регистрируется в log / development.log. У вас будут строки вроде:
Ad Load (1.4ms) SELECT "ads".* FROM "ads" ORDER BY created_at DESC