2009-03-26 12 views
9

Estoy trabajando en una "optimización" en mi aplicación y estoy tratando de entender la salida que dan los rieles (versión 2.2.2) al final del renderizado.Comprensión de los tiempos de renderizado de Ruby on Rails

Aquí es la forma "antigua":

Rendered user/_old_log (25.7ms) 
Completed in 466ms (View: 195, DB: 8) | 200 OK 

Y la forma "nueva":

Rendered user/_new_log (48.6ms) 
Completed in 337ms (View: 192, DB: 33) | 200 OK 

Estas consultas eran exactamente lo mismo, la diferencia es la forma más antigua es analizar los archivos de registro mientras que la nueva forma es consultar la tabla de registro de la base de datos.

La velocidad real de la página no es el problema (el usuario entiende que esta es una solicitud lenta) ... pero me gustaría que la página responda lo más rápido posible a pesar de que es una página "lenta".

Entonces, mi pregunta es, ¿qué representan/significan los números? En otras palabras, ¿de qué manera fue el método más rápido y por qué?

Respuesta

14

Este:

Rendered user/_old_log (25.7ms) 

es el momento de hacer simplemente la plantilla parcial _old_log, y proviene de una ActiveSupport::Notification siendo procesado por ActionView::LogSubscriber

Este:

Completed 200 OK in 466ms 

¿Está el estado http devuelto, así como el tiempo total para la solicitud completa. Viene de ActionController::LogSubscriber.

Además, tenga en cuenta esos elementos entre paréntesis al final:

(Views: 124.6ms | ActiveRecord: 10.8ms) 

Esos son los tiempos totales para la prestación de toda la vista (parciales & todo) y todas las solicitudes de base de datos, respectivamente, y provienen de ActionController::LogSubscriber también.

-1

Su nueva forma es pasar menos tiempo en general pero más tiempo representando la plantilla.

+0

¿Puedes desglosar (o señalarme un escrito) cómo interpretar esto por mi cuenta? –

3

La respuesta de Jordan es correcta. Parafraseando, el primer número es el tiempo que tomó la página para cargar. El segundo es cuánto tiempo llevó la vista generar. El último número es cuánto tiempo le tomó a su base de datos manejar todas las consultas que le envió.

También puede obtener una estimación de cuánto tiempo tomó su controlador y modelo al restar los dos últimos números del primer número, pero una mejor manera sería usar el método de referencia Benchmark.measure (http://www.ruby-doc.org/stdlib/libdoc/benchmark/rdoc/classes/Benchmark.html).

Su nueva forma parece haber mejorado porque el código en el Controlador/Modelo se completa más rápido.