Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > What is faster? C++ vector sort or sort in database

Reply
Thread Tools

What is faster? C++ vector sort or sort in database

 
 
JerryJ
Guest
Posts: n/a
 
      04-24-2004
I have to fetch values from a database and store them in a vector in
my c++ application.

What is faster? if i fetch the values sorted from the database with a
'order by' clause in the sql-statement or if i fetch them into the
vector unsorted and sort the vector then?


Thanx for your help


Greetz

Jens
 
Reply With Quote
 
 
 
 
John Harrison
Guest
Posts: n/a
 
      04-24-2004

"JerryJ" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) m...
> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?
>
>
> Thanx for your help
>


There is only one way to answer that, try them both and time it.

john


 
Reply With Quote
 
 
 
 
Mike Wahler
Guest
Posts: n/a
 
      04-24-2004

"JerryJ" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) m...
> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?


The faster method will be the one which consumes
the least amount of time. Only one way to determine
that.

-Mike


 
Reply With Quote
 
Julie
Guest
Posts: n/a
 
      04-24-2004
JerryJ wrote:
>
> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?
>
> Thanx for your help
>
> Greetz
>
> Jens


That question can not be generally answered, there are just too many external
factors that can determine performance.

Your only option is to examine the performance empirically between each method
and make a decision at that point.
 
Reply With Quote
 
=?ISO-8859-2?Q?Mateusz_=A3oskot?=
Guest
Posts: n/a
 
      04-24-2004
On 4/24/2004 11:19 AM, JerryJ wrote:
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?


I'm not going to answer your question directly, but
I'd do use 'order by' in SQL statement rather than vector sort function.
You may increase performance creating some indexes in your database
(indexes are one of the factor influencing the performance).

If you are creating client-side solution and your application
queries database working on other machine it would be better
to sort results on the 'server-side' using SQL.

Greets

--

Mateusz Łoskot
mateusz at loskot dot net
 
Reply With Quote
 
Cy Edmunds
Guest
Posts: n/a
 
      04-24-2004
"JerryJ" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) m...
> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?
>
>
> Thanx for your help
>
>
> Greetz
>
> Jens


I agree with the other posters who said to time it, but in general I would
say that if you have a decent database program it should not be necessary to
duplicate basic SQL functionality for performance reasons. If it *does*
prove necessary, change database programs.

--
Cy
http://home.rochester.rr.com/cyhome/


 
Reply With Quote
 
Rakesh Kumar
Guest
Posts: n/a
 
      04-25-2004
There are many factors out here -

i) Where is your DB server ? Is it on a different machine than yours.
When you get the values and use vector, you are doing it on the DB
client, whereas executing DB queries would mean you are doing things on
the server.
Generally , the server is much more powerful ( people invest more on
servers than on clients). Hence it would be better to do the task on the
DB itself, rather than in C++ .


ii) Assuming still that the DB and the C++ code run on the same machine,
it would still make sense to have it on the DB, since the DB engine
generally comes up with optimizations to improve locality of reference
when they execute the code ( to reduce 'thrashing' in particular).
While, of course, that could be done in C++ , you need to decide if
the time spent on that is worth investing.

HTH


JerryJ wrote:

> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?
>
>
> Thanx for your help
>
>
> Greetz
>
> Jens


--
Rakesh Kumar
** Remove nospamplz from my email address for my real email **
 
Reply With Quote
 
Siemel Naran
Guest
Posts: n/a
 
      04-28-2004
"Rakesh Kumar" <(E-Mail Removed)> wrote in message
news:408b1721

> Generally , the server is much more powerful ( people invest more on
> servers than on clients). Hence it would be better to do the task on the
> DB itself, rather than in C++ .


OTOH, the server is serving thousands of people, but the client serves just
one person. So it could still be faster to do the sorting on the client
side.


 
Reply With Quote
 
Siemel Naran
Guest
Posts: n/a
 
      04-28-2004
"JerryJ" <(E-Mail Removed)> wrote in message

> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?


Generally, sorting on server is faster. Moreover, using ORDER BY in the
select statement could encourage the database to use the right index and do
no sort at all, so your performance will be super-fast. This is especially
invaluable for large datasets.

OTOH, if you read a list of names, then the user clicks the last name to
sort by last name, then the clicks first name to sort by first name, then
clicks city to sort by city, etc, then it might be better to do all the
sorting on the client side.

Of course, this means loading all the data into the std::vector, which might
not be possible or advised because there are so many records.

Sorry, no fixed answer to the question.


 
Reply With Quote
 
Dave Moore
Guest
Posts: n/a
 
      04-28-2004
http://www.velocityreviews.com/forums/(E-Mail Removed) (JerryJ) wrote in message news:<(E-Mail Removed) om>...
> I have to fetch values from a database and store them in a vector in
> my c++ application.
>
> What is faster? if i fetch the values sorted from the database with a
> 'order by' clause in the sql-statement or if i fetch them into the
> vector unsorted and sort the vector then?
>
>
> Thanx for your help
>
>
> Greetz
>
> Jens


Instead of std::vector, why not use a std::map<Key, record>, where key
is the data to be used as a sorting criterion. If the compare
operation is already defined (like for a built-in data type), then you
can just use subscripting or the insert function to make the map,
which will automatically be sorted. If you need to define a user
specific compare operation, you can specify the appropriate functor as
a template parameter or ctor argument.

Also, I don't know anything about SQL's interaction with C++ in
particular, but if it is possible to get only pointers to the records
(IOW std::map<Key, record *>), that will avoid copying the records,
which will probably save time.

Oh .. I just re-read your post and saw you said "values from the
database" ... if you really just want an ordered list of comparable
values, you can use std::set (instead of std::map) as above ... this
might even be more efficient.

HTH, Dave Moore
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Database Database Database Database scott93727@gmail.com Computer Information 0 09-27-2012 02:43 AM
DataBase DataBase DataBase DataBase scott93727@gmail.com Computer Information 0 09-26-2012 09:40 AM
const vector<A> vs vector<const A> vs const vector<const A> Javier C++ 2 09-04-2007 08:46 PM
Initializing vector<vector<int> > and other vector questions... pmatos C++ 6 04-26-2007 05:39 PM
Free memory allocate by a STL vector, vector of vector, map of vector Allerdyce.John@gmail.com C++ 8 02-18-2006 12:48 AM



Advertisments