Hi,
Having done some experimentation with DTL I am not convinced that OCI is
significantly faster than ODBC.
The evidence seems to suggest similar performance, at least over a network
connection. ODBC too has support
for bulk fetch and bulk insert. My suggestion is that the machinery should be
hidden by the library.
In DTL, for example, I can write
bulk_fetch_helper(view.begin(), BATCH_SIZE,
std::ostream_iterator<MyRowData>(std::cout, "\n"));
The only hint of a vector the is in the batch size parameter itself. That said,
even the out of the box performance of DTL
when not using the bulk fetch helper is superior to SOCI (70s vs 600s for my
example query) - optimised performance
is very similar for both libraries (~30s).
Regards,
Bruce.
----- Original Message ----
> From: Stephen Hutton <[email protected]>
> To: General-purpose list for SOCI users. <[email protected]>
> Sent: Sat, July 9, 2011 5:19:52 AM
> Subject: Re: [SOCI-users] Default performance of SOCI
>
>
> On Jul 8, 2011, at 3:57 AM, Bruce Adams wrote:
>
> > So clearly the bulk idiom recommended in the documentation is the
> > best one in
> > soci.
> > However its not the nicest to code compared to the more basic idiom:
> >
> > int i;
> > statement st = (sql.prepare <<
> > "select value from numbers order by value",
> > into(i));
> > st.execute();
> > while (st.fetch())
> > {
> > cout << i << '\n';
> > }
> > Unfortunately that idiom gives performance comparible to BATCH_SIZE=1
> > real 586.36
> > user 68.76
> > sys 56.17
> >
> > All these results are highly repeatable.
> > Is there anything that can be done to achieve the performance of the
> > builk idiom
> > with the basic but prettier code
> > (i.e. not having to use a vector)?
> > I am thinking perhaps, that the default should be for queries to be
> > buffered
> > with unbuffered queries
>
> The SOCI Oracle bulk operations support is a wrapper around the OCI
> API. OCI includes a high performance facility for retrieving or
> loading data in bulk, via arrays. SOCI simplifies the OCI interface
> considerably, but std::vectors (or similar) are needed in order to
> preserve the contiguous memory requirements of the underlying OCI API.
>
> Stephen
>
> ------------------------------------------------------------------------------
> All of the data generated in your IT infrastructure is seriously valuable.
> Why? It contains a definitive record of application performance, security
> threats, fraudulent activity, and more. Splunk takes this data and makes
> sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-d2d-c2
> _______________________________________________
> Soci-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/soci-users
>
------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric
Ries, the creator of the Lean Startup Methodology on "Lean Startup
Secrets Revealed." This video shows you how to validate your ideas,
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
Soci-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/soci-users