Re: Slow performance

Nik
Fri, 30 Mar 2007 17:29:01 -0000

Hey Trevor!, Thank You for commenting!

I totally agree with you. Okay, here''s what I REALLY want to do, I
have for instance, Chinese food, Italian food, and etc, right, these
are menus on the left hand panel if you can imagine, and on the right-
hand side is this targetdiv that will contain all the recipes when the
"XYZ food" button is clicked. So I do want to make the targetdiv a
rather dynamic thing, you know what I mean? I tried this RJS business.
It failed (to achieve the speed) and I beat my brains out to try to
speed it up.

I guess I should just load all on the page and hide them until
toggled?

Nik



On Mar 30, 10:16 am, Trevor Squires
<tre...-k8q5a0yEZAgS+FvcfC7Uqw@public.gmane.org>
wrote:
> Hey,
>
> So, are you saying that when you render the 5000 recipes using an
> ordinary browser request it''s fast, but when you try to use AJAX
to
> update the page with 5000 recipes it''s much slower?
>
> Doesn''t that seem sensible?  The AJAX response for stuff like
> page.replace_html will be escaped so that it can be evaluated by
> javascript (so it will be a larger over-the-wire transfer) *and* the
> javascript engine will have to process the response...
>
> Sounds to me like the solution is staring you in the face - don''t
use
> AJAX in the situations where it''s faster to just render the whole
page.
>
> HTH
> Trevor
>
> On 30-Mar-07, at 9:51 AM, 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?
>
> > 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