How to display the rendering time of a page?

Hi,

If an admin is logged in, I'm trying to display how long the page took to render, somewhere at the bottom of the page.

I tried with an around_filter :time_an_action in application.rb

def time_an_action     started = Time.now     yield     @time_to_render = Time.now - started end

In the layout I added this line: <%= @time_to_render%>

However, as the time_an_action method has already yielded the page before the instance variable @time_to_render has been given a value, it does not display it.

Trying to execute an AJAX call inside the filter or redirecting to another action, for example: def time_an_action     started = Time.now     yield     @time_to_render = Time.now - started         redirect_to :controller => "admin", :action => "display_time" end

def display_time   render :update do |page|     page.replace_html "time_to_render", @time_to_render   end end

Gives the error of "You can't render or redirect twice in the same action"...

Any suggestions?

Thanks!

Rai

Hi Rai,

This is untested code, hope it works..

Class MyTimer attr_reader :elapsed_time   def initiailize     @elapsed_time = nil   end   def before_filter     @start_time = Time.now   end   def after_filter     @end_time = Time.now     @elapsed_time = @end_time - @start_time   end end

in our layout.rhtml at the bottom, i guess u can put this code. <div> Time take to render <%= @elapsed_time %> </div>

And in application.rb (controller) require 'mytimer' class Application < ActionController::Base around_filter MyTimer.new end

P.s: The above code is untested, you can further optimize it. Sorry, i don't have ruby installed in this system. May find syntax error.

Hope it works,

Regards, Raghu Kumar K