Wouldn't it be better to paginate instead of waiting for all the records?

Adrian Madrid
[email protected]



On Tue, Mar 29, 2011 at 10:11, Jeremy Evans <[email protected]> wrote:

> On Mar 29, 4:31 am, hendra kusuma <[email protected]> wrote:
> > On Tue, Mar 29, 2011 at 7:05 PM, hendra kusuma <[email protected]
> >wrote:
> >
> > > Dear all,
> >
> > > Is there a way to convert sequel dataset to 2D array?
> > > I need all data in my table and  save it in 2D array.
> > > converting it manually by reading each data and save it to array
> > > result in horibly slow performance,
> > > 5000 records with 20 field takes 15 sec
> >
> > just want to make myself clear
> > I am developing a business desktop application for my own store here
> > I use gtk and sequel, and so far I am happy with those lib
> > but then when i need to display all my product in grid / treeview, i got
> > stuck
> >
> > I have about 1000 record in product table, which has 20 column (sorry,
> > wrongly type as 5000 up there)
> > so basically, i need to loop over my data, and assign it to my grid
> > this line give me 15 sec
> >
> > Product.select_all.each do |p|
> >   true
> > end
> >
> > yes, you read correctly. Product is a model class. I don't do anything
> > there, just loop and return true, and it gives me 15 sec
> >
> > While sequel is fantastic and elegant, that kind of performance is
> > unacceptable
> > perhaps i am wrong somewhere? or there is some trick I need to use
> >
> > Please. I need all input since I stuck here with no idea what
>
> There are various things you can do to speed things up:
>
> 1) Don't use models.  Models make things easier, but they have
> overhead.  This will provide a decent speedup.  Of course, you won't
> be able to call any model methods if you do this.  I doubt this will
> give you the performance you are looking for, though.
>
> DB[:products].select_all.each do |p|
>  true
> end
>
> 2) Drop down to the connection level.  This will make things much
> faster, but will be more difficult.  You don't mention what adapter
> you are using, so I can't provide any example code beyond what gives
> you the connection:
>
> DB.synchronize do |conn|
>  ...
> end
>
> Here conn is an underlying connection to the database.  What class of
> object depends on the adapter.  For example, if you are using the
> postgres adapter, is a PGConn object.  This is the fastest way, but it
> makes your code adapter dependent.  For what you are doing, it's what
> I'd recommend.
>
> To get even faster, you can write a ruby C extension that provides a
> method that accepts that connection object and uses the C database
> structures and functions to read the data and interface directly with
> gtk in C.  I wouldn't do that unless I had to for performance reasons,
> though.
>
> Jeremy
>
> --
> You received this message because you are subscribed to the Google Groups
> "sequel-talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/sequel-talk?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sequel-talk?hl=en.

Reply via email to