Why is the performance of dotConnect Universal so bad for both Oracle and PostgreSQL?
<p>I have been doing some tests and comparing the performance of <a href="https://www.devart.com/dotconnect/universal/" rel="nofollow">Devart's dotConnect Universal</a> to <a href="http://www.oracle.com/technetwork/topics/dotnet/index-085163.html" rel="nofollow">ODP.Net</a> &amp; <a href="http://www.npgsql.org/" rel="nofollow">Npgsql</a> when accesing an Oracle &amp; PostgreSQL database respectively and its pretty disapointing. In both cases, dotConnect Universal is a lot slower than the "native" providers for .NET.</p>

<p>For example, consider my simple test application (which can be found <a href="http://filegooi.co.za/get2/243ea3fbf92a897e085ae4d86d993a57/DbClientPerfTestWithSchemaScripts.zip" rel="nofollow">here</a> 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:</p>

<pre><code>                                                     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
</code></pre>

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

<p>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>

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