2

I have been doing some tests and comparing the performance of Devart's dotConnect Universal to ODP.Net & Npgsql when accesing an Oracle & PostgreSQL database respectively and its pretty disapointing. In both cases, dotConnect Universal is a lot slower than the "native" providers for .NET.

For example, consider my simple test application (which can be found here with the database schema creation scripts). It counts the number of rows in a table then inserts 10,000 rows into that table using a stored procedure. The code has been written in such a way that the same C# code is being used for each of the 4 tests to eliminate it as the cause of the bad performance. Here are the results:

                                                     Count rows in table      Insert          Insert       Insert 
Connection Type (Oracle)                                Duration (ms)     Duration(ms)    Per Row(ms)     Rows/sec
--------------------------------------------------- --------------------- --------------- --------------- --------
Oracle.ManagedDataAccess.Client.OracleConnection             34               6,741           0.674         1,483
Devart.Data.Universal.UniConnection(Oracle)                  69              17,498           1.750           571
--------------------------------------------------- --------------------- --------------- --------------- --------
Difference                                                   35              10,757           1.076          -912

                                                     Count rows in table      Insert          Insert       Insert 
Connection Type (PostgreSQL)                            Duration (ms)     Duration(ms)    Per Row(ms)     Rows/sec
--------------------------------------------------- --------------------- --------------- --------------- --------
Npgsql.NpgsqlConnection                                       8               6,136           0.614         1,630
Devart.Data.Universal.UniConnection(PostgreSQL)              29              11,187           1.119           894
--------------------------------------------------- --------------------- --------------- --------------- --------
Difference                                                   21               5,051           0.505          -736

This is the last result after a 3 runs, the table is truncated before each test run.

From a developer's point of view (i.e. IMHO), the dotConnect Universal is a brilliant product allowing me to target multiple databases from a single .NET code base with very little effort. But there always seems to be be a downside, no free lunch it seems and for dotConnect Universal it is its performance. So is this the price you pay for supporting multiple databases or is there something I am missing?

P.S. I have asked Devart for support on this but no response (yet) after a week.

VinceJS
  • 1,254
  • 3
  • 18
  • 38
  • I don't know much about DevArt's provider but Oracle applications are very sensitive to things like rowsize and fetchsize and connection pooling and statement caching (or lack thereof). It is tricky to do an apples to apples comparison unless you know the default settings for these features. By default, ODP.NET has connection pooling on, a reasonably large fetchsize, and statement caching autotuning. – Christian Shay Jul 06 '16 at 21:09
  • I got a response from DevArt (so holding thumbs that its something I am doing wrong)! Also updated the post, the test application now includes the create schema scripts for both Oracle and PostgreSQL. – VinceJS Jul 07 '16 at 12:46

0 Answers0