Re: Slow performance

Nik
Fri, 30 Mar 2007 17:21:54 -0000

Hey Rob, thanks again for the swift reply.

I did mean to take out the :update part. Sorry about the confusion
(again).

I tried the :limit => 10, but it doesn''t seem to help;(

I am doomed.

Nik


On Mar 30, 10:10 am, Rob Biedenharn
<R...-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org>
wrote:
> On Mar 30, 2007, at 12:51 PM, Nik wrote:
>
>
>
> > Hello Rob, Thank You Thank you Thank you for replying!!
>
> > Sorry about my confusing writing. Here''s the improvement:
>
> > So I have the FAST version like this:
> >
> > <% for i in Recipes.find(:all) %>
> >   <%= i.ingredients %>
> > <% end %>
> > </body
>
> > All ingredients from the 5,000+ recipes show up in less than 1.5
> > seconds.
>
> > Then I have this slow version like this:
> >
> > <%= link_to_remote "show ingredients", :update =>
"targetdiv", :url =>
> > {:action => "showIngredients"} %>
> >
> >
> >
>
> > and in the controller:
> > def showingredients
> >   render :update do |page|
> >     page.replace_html ''targetdiv'', :partial =>
''i'', :collection =>
> > Recipes.find(:all)
> >   end
> > end
>
> > And in the partial ''i'':
> > <%= i.ingredients %>
>
> > So that''s all. The slow version takes as much as 14 seconds
sometimes.
>
> > Any ideas?
>
> Have you looked at this with Firefox and Firebug?  You should be able
> to see how long the request takes.  Then I''d see what changing to:
>
> def showingredients
>    render :update do |page|
>      page.replace_html ''targetdiv'', :partial =>
''i'', :collection =>
> Recipes.find(:all, :limit => 10)
>    end
> end
>
> does to the timing.
>
> Actually, do you even get the right result after you wait for it?
> You have :update => "targetdiv", but then you''re
sending the
> javascript to do the replace.  If you want to keep the :update,
> change the controller to be just:
>
> def showingredients
>    render :partial => ''i'', :collection =>
Recipes.find(:all, :limit
> => 10)
> end
>
> Hope that helps.
>
> -Rob
>
>
>
> > On Mar 29, 5:50 pm, Rob Biedenharn
<R...-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org>
> > wrote:
> >> On Mar 29, 2007, at 8:16 PM, Nik wrote:
>
> >>> Hello all, I found a strange dilemma here:
>
> >>> I have a table of several thousand rows and I experimented
with
> >>> these
> >>> two method to display them:
>
> >>> In this first method, I just put the follow in the view,
let''s call
> >>> the view, display.rhtml
> >>> <% for x in Cookbook.find(:all) %>
> >>> <%= x.recipe %>
> >>> <% end %>
> >>> The page displays all 5000 recipes in less than 2 seconds. I
am
> >>> quite
> >>> happy with it.
>
> >>> The second method, I put the find() business in the controller
> >>> within
> >>> a render :update do |page|.
>
> >>> def showrecipe
> >>>    render :update do |page|
> >>>      page.replace_html ''displaydiv'',
:partial =>
> >>> ''recipe'', :collection
> >>> => find(:all, conditions => ["cuisine = ?",
"italian"])
> >>>  end
> >>> end
>
> >>> This method, when called, takes forever.
>
> >>> ----> Can anyone be kind enough to hint why this is the
case? <--
>
> >>> Thank You!
>
> >> Hmm... no index on the `cuisine` column?  (I''m assuming
that you
> >> really have :conditions as the : seems to be misssing.)
>
> >> Also, do you really want to push that much data back with rjs?  If
> >> all you need is to update a div, use the :update option on your
> >> link_to_remote.
>
> >> You also don''t say where the "forever" is
taking place, for example,
> >> what does the log file contain?  (I don''t actually
believe you since
> >> I''m never personally waited that long ;-)
>
> >> -Rob
>
> >> Rob Biedenharn          http://agileconsultingllc.com
> >> R...-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org
>
> Rob Biedenharn          http://agileconsultingllc.com
> R...-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org