Я сделал очень мало этого вида проверки производительности (я склонен просто думать, что "это медленно, сделайте его быстрее"), таким образом, я в значительной степени всегда шел с этим.
А Google действительно показывает много ресурсов/статей для проверки производительности.
Многие упоминают, что использовали pinvoke для получения информации производительности. Много материалов я изучаю только действительно упоминание с помощью perfmon..
Замеченный переговоры о StopWatch.. Хороший! Я изучил что-то:)
Если у вас настроена связь has_many: through, вы должны просто уметь:
@call_summaries = @current_user.call_summaries
Проблема с вашим методом заключается в том, что вы вызываете call_summaries
в коллекции @phones, скорее чем на отдельных телефонных аппаратах.
@phones
- это массив объектов Phone
. Вам необходимо выполнить итерацию по этому массиву и добавить сводку звонков по каждому телефону в один массив. Попробуйте это:
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.inject([]){|arr, phone| arr + phone.call_summaries}
Не по теме, и я просто привередливый, но динамический поиск более читабелен:
@phones = Phone.find_all_by_user_id(@current_user)